private void ChangePackage(CommandEventArgs e, string packageId, string version) { IEnumerable <string> errors = Enumerable.Empty <string>(); switch (e.CommandName.ToLower()) { case "uninstall": { var package = NuGetService.SourceRepository.FindPackage(packageId, (version != null) ? SemanticVersion.Parse(version) : null, false, false); errors = NuGetService.UninstallPackage(package, true); } break; case "install": { var package = NuGetService.SourceRepository.FindPackage(packageId, (version != null) ? SemanticVersion.Parse(version) : null, false, false); if (package != null) { errors = NuGetService.InstallPackage(package); //IEnumerable<IPackage> packagesRequiringLicenseAcceptance = NuGetService.GetPackagesRequiringLicenseAcceptance(package); } break; } case "update": { var installed = NuGetService.GetInstalledPackage(packageId); try { var update = NuGetService.GetUpdate(installed); errors = NuGetService.UpdatePackage(update); } catch (InvalidOperationException ex) { errors.Concat(new[] { string.Format("There is a problem with {0}: {1}", installed.Title, ex.Message) }); } } break; } if (errors != null && errors.Count() > 0) { nbMessage.Visible = true; nbMessage.Text = errors.Aggregate(new StringBuilder("<ul>"), (sb, s) => sb.AppendFormat("<li>{0}</li>", s)).Append("</ul>").ToString(); } }
/// <summary> /// Used to populate each item in the PackageList /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gPackageList_RowDataBound(object sender, GridViewRowEventArgs e) { IPackage package = e.Row.DataItem as IPackage; if (package != null) { Boolean isPackageInstalled = NuGetService.IsPackageInstalled(package, anyVersion: true); LinkButton lbCommand = e.Row.FindControl("lbCommand") as LinkButton; LinkButton lbUpdate = e.Row.FindControl("lbUpdate") as LinkButton; LinkButton lbView = e.Row.FindControl("lbView") as LinkButton; HtmlAnchor link = e.Row.FindControl("lProjectUrl") as HtmlAnchor; Literal lblAuthors = e.Row.FindControl("lblAuthors") as Literal; Literal lblVersion = e.Row.FindControl("lblVersion") as Literal; Literal lblLatestVersion = e.Row.FindControl("lblLatestVersion") as Literal; Literal lblInstalledVersion = e.Row.FindControl("lblInstalledVersion") as Literal; if (package.IconUrl != null) { Image imgIconUrl = e.Row.FindControl("imgIconUrl") as Image; imgIconUrl.ImageUrl = package.IconUrl.ToString();; } lblAuthors.Text = string.Join(",", package.Authors); if (package.ProjectUrl != null) { link.Visible = true; link.HRef = package.ProjectUrl.ToString(); } else { link.Visible = false; } lbUpdate.Visible = false; // If this package (not necessarily this version) is installed // show an uninstall button and/or an update button if a later version exists if (isPackageInstalled) { IPackage theInstalledPackage = NuGetService.GetInstalledPackage(package.Id); if (theInstalledPackage != null) { lblInstalledVersion.Visible = true; lblInstalledVersion.Text += theInstalledPackage.Version; try { // Checking "IsLatestVersion" does not work because of what's discussed here: // http://nuget.codeplex.com/discussions/279837 // if ( !installedPackage.IsLatestVersion )... var latestPackage = NuGetService.GetUpdate(package); if (latestPackage != null) { lbUpdate.Visible = true; lblLatestVersion.Visible = true; lblLatestVersion.Text += latestPackage.Version; } } catch (InvalidOperationException ex) { Literal lblItemError = e.Row.FindControl("lblItemError") as Literal; lblItemError.Text = string.Format("<p class='text-error'>We're having a problem... {0}</p>", ex.Message); } } lbCommand.CommandName = "uninstall"; lbCommand.Text = "<i class='fa fa-times'></i> Uninstall"; lbCommand.AddCssClass("btn-warning"); } else { lblVersion.Visible = true; lblVersion.Text += package.Version; lbCommand.CommandName = "Install"; lbCommand.Text = "<i class='fa fa-download'></i> Install"; } lbCommand.CommandArgument = lbUpdate.CommandArgument = lbView.CommandArgument = e.Row.RowIndex.ToString(); } }