public PreviewWindowModel(
     IEnumerable <PackageAction> actions,
     Installation.InstallationTarget target)
 {
     _previewResults = PreviewResult.CreatePreview(actions, target);
     Title           = Resources.Resources.WindowTitle_Preview;
 }
        public void ExecuteScript(string packageInstallPath, string scriptRelativePath, object package, Installation.InstallationTarget target)
        {
            var executor = new VsPowerShellScriptExecutor(ServiceLocator.GetInstance <IScriptExecutor>());

            executor.ExecuteScript(packageInstallPath, scriptRelativePath, package, target, this);
        }
Esempio n. 3
0
        public void ExecuteScript(string packageInstallPath, string scriptRelativePath, object packageObject, Installation.InstallationTarget target)
        {
            IPackage package = (IPackage)packageObject;

            // If we don't have a project, we're at solution level
            string        projectName     = target.Name;
            FrameworkName targetFramework = target.GetSupportedFrameworks().FirstOrDefault();

            VsProject targetProject = target as VsProject;

            EnvDTE.Project project  = targetProject == null ? null : targetProject.DteProject;
            string         fullPath = Path.Combine(packageInstallPath, scriptRelativePath);

            if (!File.Exists(fullPath))
            {
                VsNuGetTraceSources.VsPowerShellScriptExecutionFeature.Error(
                    "missing_script",
                    "[{0}] Unable to locate expected script file: {1}",
                    projectName,
                    fullPath);
            }
            else
            {
                var    psVariable = SessionState.PSVariable;
                string toolsPath  = Path.GetDirectoryName(fullPath);

                // set temp variables to pass to the script
                psVariable.Set("__rootPath", packageInstallPath);
                psVariable.Set("__toolsPath", toolsPath);
                psVariable.Set("__package", package);
                psVariable.Set("__project", project);

                string command = "& " + PathHelper.EscapePSPath(fullPath) + " $__rootPath $__toolsPath $__package $__project";
                Log(MessageLevel.Info, String.Format(CultureInfo.CurrentCulture, VsResources.ExecutingScript, fullPath));

                InvokeCommand.InvokeScript(command, false, PipelineResultTypes.Error, null, null);

                // clear temp variables
                psVariable.Remove("__rootPath");
                psVariable.Remove("__toolsPath");
                psVariable.Remove("__package");
                psVariable.Remove("__project");
            }
        }