private void step3CodeActivity_DownloadAndValidate_ExecuteCode(object sender, EventArgs e) { try { PackageDescription packageDescription = GetPackageDescription(); string packageServerSource = PackageSystemServices.GetPackageSourceNameByPackageId(packageDescription.Id, InstallationInformationFacade.InstallationId, UserSettings.CultureInfo); System.IO.Stream installFileStream = PackageServerFacade.GetInstallFileStream(packageDescription.PackageFileDownloadUrl); PackageManagerInstallProcess packageManagerInstallProcess = PackageManager.Install(installFileStream, false, packageServerSource); this.Bindings.Add("PackageManagerInstallProcess", packageManagerInstallProcess); this.Bindings.Add("FlushOnCompletion", packageManagerInstallProcess.FlushOnCompletion); this.Bindings.Add("ReloadConsoleOnCompletion", packageManagerInstallProcess.ReloadConsoleOnCompletion); if (packageManagerInstallProcess.PreInstallValidationResult.Count > 0) { this.UpdateBinding("Errors", WorkflowHelper.ValidationResultToBinding(packageManagerInstallProcess.PreInstallValidationResult)); } else { List <PackageFragmentValidationResult> validationResult = packageManagerInstallProcess.Validate(); if (validationResult.Count > 0) { this.UpdateBinding("LayoutLabel", StringResourceSystemFacade.GetString("Composite.Plugins.PackageElementProvider", "InstallRemotePackage.ShowWarning.LayoutLabel")); this.UpdateBinding("TableCaption", StringResourceSystemFacade.GetString("Composite.Plugins.PackageElementProvider", "InstallRemotePackage.ShowWarning.InfoTableCaption")); this.UpdateBinding("Errors", WorkflowHelper.ValidationResultToBinding(validationResult)); } else { this.UpdateBinding("Uninstallable", packageManagerInstallProcess.CanBeUninstalled == false); } } } catch (Exception ex) { this.UpdateBinding("Errors", new List <List <string> > { new List <string> { ex.Message, "" } }); } }
private void step1CodeActivity_ValidateServerUrl_ExecuteCode(object sender, EventArgs e) { string url = this.GetBinding <string>("Url"); try { var uriBuilder = new UriBuilder(url); string cleanedUrl = uriBuilder.Uri.ToString().Remove(0, uriBuilder.Scheme.Length + 3); if (cleanedUrl.EndsWith("/")) { cleanedUrl = cleanedUrl.Remove(cleanedUrl.Length - 1); } ServerUrlValidationResult serverUrlValidationResult = PackageServerFacade.ValidateServerUrl(cleanedUrl); _urlIsValid = true; if (serverUrlValidationResult == ServerUrlValidationResult.Invalid) { this.ShowFieldMessage(BindingNames.Url, Texts.AddPackageSource_Step1_UrlNonPackageServer); _urlIsValid = false; } else if (serverUrlValidationResult == ServerUrlValidationResult.Https) { cleanedUrl = string.Format("https://{0}", cleanedUrl); this.UpdateBinding(BindingNames.HttpOnly, false); } else if (serverUrlValidationResult == ServerUrlValidationResult.Http) { cleanedUrl = string.Format("http://{0}", cleanedUrl); } this.UpdateBinding(BindingNames.CleanedUrl, cleanedUrl); } catch (Exception ex) { Log.LogWarning(LogTitle, "Failed to validate package source '{0}'", url); Log.LogWarning(LogTitle, ex); this.ShowFieldMessage(BindingNames.Url, Texts.AddPackageSource_Step1_UrlNotValid); } }
private void step2CodeActivity_Uninstall_ExecuteCode(object sender, EventArgs e) { PackageElementProviderInstalledPackageItemEntityToken castedToken = (PackageElementProviderInstalledPackageItemEntityToken)this.EntityToken; PackageManagerUninstallProcess packageManagerUninstallProcess = this.GetBinding <PackageManagerUninstallProcess>("PackageManagerUninstallProcess"); Exception exception = null; try { string packageServerAddress = (from a in PackageManager.GetInstalledPackages() where a.Id == castedToken.PackageId select a.PackageServerAddress).Single(); List <PackageFragmentValidationResult> uninstallResult = packageManagerUninstallProcess.Uninstall(); try { PackageServerFacade.RegisterPackageUninstall(packageServerAddress, InstallationInformationFacade.InstallationId, castedToken.PackageId, UserSettings.Username, UserSettings.UserIPAddress.ToString()); } catch (Exception ex) { LoggingService.LogWarning("UninstallRemovePackageWorkflow", ex); this.UpdateBinding("UnregisterError", true); } if (uninstallResult.Count > 0) { this.UpdateBinding("Errors", WorkflowHelper.ValidationResultToBinding(uninstallResult)); } } catch (Exception ex) { exception = ex; this.UpdateBinding("Errors", new List <List <string> > { new List <string> { ex.Message, "" } }); } }
private void viewStateCodeActivity_Initialize_ExecuteCode(object sender, EventArgs e) { var castedToken = (PackageElementProviderInstalledPackageItemEntityToken)this.EntityToken; Guid packageId = castedToken.PackageId; if (castedToken.CanBeUninstalled) { this.SetCustomToolbarDefinition(new FormDefinitionFileMarkupProvider(CustomToolbarDefinitionPath)); } if (this.BindingExist(BindingNames.InstalledPackageInformation)) { return; } InstalledPackageInformation installedAddOnInformation = PackageManager.GetInstalledPackages().Single(info => info.Id == packageId); string name = installedAddOnInformation.Name; string documentTitle = GetDocumentTitle(name); DateTime installationDate = installedAddOnInformation.InstallDate.ToLocalTime(); this.Bindings = new Dictionary <string, object> { { BindingNames.DocumentTitle, documentTitle }, { BindingNames.InstalledPackageInformation, installedAddOnInformation }, { BindingNames.InstallDate, installationDate.ToString() } }; PackageDescription packageDescription = null; try { var allPackages = PackageServerFacade.GetAllPackageDescriptions(InstallationInformationFacade.InstallationId, UserSettings.CultureInfo); packageDescription = allPackages.FirstOrDefault(p => p.Id == packageId); } catch { } if (!string.IsNullOrEmpty(packageDescription?.ReadMoreUrl)) { this.Bindings[BindingNames.ReadMoreUrl] = packageDescription.ReadMoreUrl; } var licenses = GetRelatedLicenses(packageId, packageDescription); var actualLicense = licenses.OrderBy(l => l.HasExpired).ThenByDescending(l => l.IsSubscription).FirstOrDefault(); if (actualLicense != null) { Bindings[BindingNames.LicenseExpirationDate] = actualLicense.ExpirationDate.ToLocalTime().ToString(); } bool isTrial = actualLicense != null && actualLicense.IsTrial; this.Bindings[BindingNames.IsTrial] = isTrial; bool showPurchaseButton = false; if (isTrial && !string.IsNullOrWhiteSpace(actualLicense.PurchaseUrl)) { string url = actualLicense.PurchaseUrl; this.Bindings[BindingNames.TrialPurchaseUrl] = url; showPurchaseButton = true; } this.Bindings[BindingNames.ShowPurchaseThisButton] = showPurchaseButton; bool isSubscription = actualLicense != null && actualLicense.IsSubscription; this.Bindings[BindingNames.IsSubscription] = isSubscription; if (isSubscription) { Bindings[BindingNames.SubscriptionName] = actualLicense.Name; } }
private void viewStateCodeActivity_Initialize_ExecuteCode(object sender, EventArgs e) { var castedToken = (PackageElementProviderInstalledPackageItemEntityToken)this.EntityToken; if (!this.BindingExist("InstalledPackageInformation")) { InstalledPackageInformation installedAddOnInformation = (from info in PackageManager.GetInstalledPackages() where info.Id == castedToken.PackageId select info).Single(); string name = installedAddOnInformation.Name; string documentTitle = (name.Contains('.') && !name.EndsWith(".") ? string.Format("{0} ({1})", name.Substring(name.LastIndexOf('.') + 1), name.Substring(0, name.LastIndexOf('.'))) : name); this.Bindings.Add("DocumentTitle", documentTitle); this.Bindings.Add("InstalledPackageInformation", installedAddOnInformation); this.Bindings.Add("InstallDate", installedAddOnInformation.InstallDate.ToLocalTime().ToString()); PackageLicenseDefinition licenseInfo = PackageLicenseHelper.GetLicenseDefinition(installedAddOnInformation.Id); bool isTrial = (licenseInfo != null && !licenseInfo.Permanent); this.Bindings.Add("IsTrial", isTrial); this.Bindings.Add("ShowPurchaseThisButton", isTrial && !string.IsNullOrWhiteSpace(licenseInfo.PurchaseUrl)); PackageDescription packageDescription = null; try { Guid packageId = new Guid(castedToken.Id); var allPackages = PackageServerFacade.GetAllPackageDescriptions(InstallationInformationFacade.InstallationId, UserSettings.CultureInfo); packageDescription = allPackages.FirstOrDefault(p => p.Id == packageId); } catch { } if (packageDescription != null && !string.IsNullOrEmpty(packageDescription.ReadMoreUrl)) { this.Bindings.Add("ReadMoreUrl", packageDescription.ReadMoreUrl); } if (isTrial) { this.Bindings.Add("TrialExpire", licenseInfo.Expires.ToLocalTime().ToString()); if (!string.IsNullOrWhiteSpace(licenseInfo.PurchaseUrl)) { //string url = string.Format("{0}{1}installationId={2}", licenseInfo.PurchaseUrl, (licenseInfo.PurchaseUrl.Contains('?') ? "&" : "?"), Composite.Core.Configuration.InstallationInformationFacade.InstallationId); string url = licenseInfo.PurchaseUrl; this.Bindings.Add("TrialPurchaseUrl", url); } } } if (castedToken.CanBeUninstalled) { this.SetCustomToolbarDefinition(new FormDefinitionFileMarkupProvider(@"\Administrative\PackageElementProviderViewInstalledPackageInformationToolbar.xml")); } }
public static PackageDescription GetPackageDescription(Guid packageId) { return(PackageServerFacade.GetAllPackageDescriptions(Guid.Empty, CultureInfo.CreateSpecificCulture("en-us")).SingleOrDefault(p => p.Id == packageId)); }
private void step4CodeActivity_Install_ExecuteCode(object sender, EventArgs e) { PackageDescription packageDescription = GetPackageDescription(); PackageManagerInstallProcess packageManagerInstallProcess = this.GetBinding <PackageManagerInstallProcess>("PackageManagerInstallProcess"); bool installOk = false; string packageServerUrl = null; Exception exception = null; try { packageServerUrl = PackageSystemServices.GetPackageSourceNameByPackageId(packageDescription.Id, InstallationInformationFacade.InstallationId, UserSettings.CultureInfo); List <PackageFragmentValidationResult> installResult = packageManagerInstallProcess.Install(); if (installResult.Count > 0) { this.UpdateBinding("Errors", WorkflowHelper.ValidationResultToBinding(installResult)); } else { installOk = true; } } catch (Exception ex) { exception = ex; this.UpdateBinding("Errors", new List <List <string> > { new List <string> { ex.Message, "" } }); } try { if (installOk) { PackageServerFacade.RegisterPackageInstallationCompletion(packageServerUrl, InstallationInformationFacade.InstallationId, packageDescription.Id, UserSettings.Username, UserSettings.UserIPAddress.ToString()); } else { StringBuilder sb = new StringBuilder(); if (exception != null) { sb.Append(exception.ToString()); } else { List <List <string> > errors = this.GetBinding <List <List <string> > >("Errors"); foreach (List <string> list in errors) { sb.AppendLine(list[0]); } } PackageServerFacade.RegisterPackageInstallationFailure(packageServerUrl, InstallationInformationFacade.InstallationId, packageDescription.Id, UserSettings.Username, UserSettings.UserIPAddress.ToString(), sb.ToString()); } } catch (Exception ex) { LoggingService.LogWarning("InstallRemotePackageWorkflow", ex); } }
public FlowToken Execute(EntityToken entityToken, ActionToken actionToken, FlowControllerServicesContainer flowControllerServicesContainer) { PackageServerFacade.ClearServerCache(); return(null); }