protected virtual async Task <bool> CallCommandAsync(string argument, string cwd) { ProcessStartInfo start = new ProcessStartInfo { WorkingDirectory = cwd, UseShellExecute = false, WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, FileName = "cmd.exe", Arguments = argument, RedirectStandardError = true, RedirectStandardOutput = true, StandardErrorEncoding = Encoding.UTF8, StandardOutputEncoding = Encoding.UTF8, }; ModifyPathVariable(start); try { using (var p = System.Diagnostics.Process.Start(start)) { var error = await p.StandardError.ReadToEndAsync(); var output = await p.StandardOutput.ReadToEndAsync(); p.WaitForExit(); Logger.Log(output, true); if (p.ExitCode == 0) { await PackageInstallerPackage.UpdateStatus("Package installed"); } else { await PackageInstallerPackage.UpdateStatus("An error installing package. See output window for details"); Logger.Log(error, true); } } return(true); } catch (Exception ex) { await PackageInstallerPackage.UpdateStatus("An error installing package. See output window for details"); Logger.Log(ex, true); return(false); } }
private async void ShowInstallDialogAsync(object sender, EventArgs e) { var dte = (DTE)ServiceProvider.GetService(typeof(DTE)); Project project = _project ?? ProjectHelpers.GetSelectedProject() ?? GetActiveDocumentProject(dte); if (project == null) { return; } InstallDialog dialog = new InstallDialog(ServiceProvider, new Bower(), new Jspm(), new Npm(), new NuGet(), new Tsd(), new Typings(), new Yarn()); var hwnd = new IntPtr(dte.MainWindow.HWnd); System.Windows.Window window = (System.Windows.Window)HwndSource.FromHwnd(hwnd).RootVisual; dialog.Owner = window; var result = dialog.ShowDialog(); if (!dialog.DialogResult.HasValue || !dialog.DialogResult.Value) { return; } try { await PackageInstallerPackage.AnimateStatusBar(true); await PackageInstallerPackage.UpdateStatus($"Installing {dialog.Package} package from {dialog.Provider.Name}..."); Logger.Log($"Installing {dialog.Package} package from {dialog.Provider.Name}..."); await dialog.Provider.InstallPackage(project, dialog.Package, dialog.Version, dialog.Arguments); } finally { await PackageInstallerPackage.AnimateStatusBar(false); await PackageInstallerPackage.HideStatus(3000); } }
public override async Task <bool> InstallPackage(Project project, string packageName, string version, string args = null) { var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel)); var installer = componentModel.GetService <IVsPackageInstaller>(); return(await System.Threading.Tasks.Task.Run(async() => { try { installer.InstallPackage(null, project, packageName, (Version)null, false); await PackageInstallerPackage.UpdateStatus("Package installed"); return true; } catch (Exception ex) { await PackageInstallerPackage.UpdateStatus("An error installing package. See output window for details"); Logger.Log(ex); return false; } })); }