public static object Update(object obj) { Hashtable args = Utils.GetSetupParameters(obj); var setupVariables = new SetupVariables { ComponentId = Utils.GetStringSetupParameter(args, Global.Parameters.ComponentId), SetupAction = SetupActions.Update, BaseDirectory = Utils.GetStringSetupParameter(args, Global.Parameters.BaseDirectory), UpdateVersion = Utils.GetStringSetupParameter(args, "UpdateVersion"), InstallerFolder = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerFolder), Installer = Utils.GetStringSetupParameter(args, Global.Parameters.Installer), InstallerType = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerType), InstallerPath = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerPath) }; AppConfig.LoadConfiguration(); InstallerForm form = new InstallerForm(); Wizard wizard = form.Wizard; // wizard.SetupVariables = setupVariables; // AppConfig.LoadComponentSettings(wizard.SetupVariables); IntroductionPage introPage = new IntroductionPage(); LicenseAgreementPage licPage = new LicenseAgreementPage(); ExpressInstallPage page2 = new ExpressInstallPage(); //create install currentScenario InstallAction action = new InstallAction(ActionTypes.Backup); action.Description = "Backing up..."; page2.Actions.Add(action); action = new InstallAction(ActionTypes.DeleteFiles); action.Description = "Deleting files..."; action.Path = "setup\\delete.txt"; page2.Actions.Add(action); action = new InstallAction(ActionTypes.CopyFiles); action.Description = "Copying files..."; page2.Actions.Add(action); action = new InstallAction(ActionTypes.UpdateConfig); action.Description = "Updating system configuration..."; page2.Actions.Add(action); FinishPage page3 = new FinishPage(); wizard.Controls.AddRange(new Control[] { introPage, licPage, page2, page3 }); wizard.LinkPages(); wizard.SelectedPage = introPage; //show wizard IWin32Window owner = args[Global.Parameters.ParentForm] as IWin32Window; return(form.ShowModal(owner)); }
public static DialogResult Update(object obj) { Hashtable args = Utils.GetSetupParameters(obj); var setupVariables = new SetupVariables { ComponentId = Utils.GetStringSetupParameter(args, Global.Parameters.ComponentId), SetupAction = SetupActions.Update, IISVersion = Global.IISVersion }; AppConfig.LoadConfiguration(); InstallerForm form = new InstallerForm(); Wizard wizard = form.Wizard; wizard.SetupVariables = setupVariables; // AppConfig.LoadComponentSettings(wizard.SetupVariables); IntroductionPage introPage = new IntroductionPage(); LicenseAgreementPage licPage = new LicenseAgreementPage(); ExpressInstallPage page2 = new ExpressInstallPage(); //create install currentScenario InstallAction action = new InstallAction(ActionTypes.Backup); action.Description = "Backing up..."; page2.Actions.Add(action); action = new InstallAction(ActionTypes.DeleteFiles); action.Description = "Deleting files..."; action.Path = "setup\\delete.txt"; page2.Actions.Add(action); action = new InstallAction(ActionTypes.CopyFiles); action.Description = "Copying files..."; page2.Actions.Add(action); action = new InstallAction(ActionTypes.ExecuteSql); action.Description = "Updating database..."; action.Path = "setup\\update_db.sql"; page2.Actions.Add(action); action = new InstallAction(ActionTypes.UpdateConfig); action.Description = "Updating system configuration..."; page2.Actions.Add(action); FinishPage page3 = new FinishPage(); wizard.Controls.AddRange(new Control[] { introPage, licPage, page2, page3 }); wizard.LinkPages(); wizard.SelectedPage = introPage; //show wizard Form parentForm = args[Global.Parameters.ParentForm] as Form; return(form.ShowDialog(parentForm)); }
public static DialogResult Setup(object obj) { Hashtable args = Utils.GetSetupParameters(obj); string shellVersion = Utils.GetStringSetupParameter(args, "ShellVersion"); // var setupVariables = new SetupVariables { ComponentId = Utils.GetStringSetupParameter(args, Global.Parameters.ComponentId), ConfigurationFile = "web.config", IISVersion = Global.IISVersion, SetupAction = SetupActions.Setup }; // AppConfig.LoadConfiguration(); InstallerForm form = new InstallerForm(); Wizard wizard = form.Wizard; wizard.SetupVariables = setupVariables; // AppConfig.LoadComponentSettings(wizard.SetupVariables); //IntroductionPage page1 = new IntroductionPage(); WebPage page1 = new WebPage(); ServerAdminPasswordPage page2 = new ServerAdminPasswordPage(); ExpressInstallPage page3 = new ExpressInstallPage(); //create install currentScenario InstallAction action = new InstallAction(ActionTypes.UpdateWebSite); action.Description = "Updating web site..."; page3.Actions.Add(action); action = new InstallAction(ActionTypes.UpdateServerAdminPassword); action.Description = "Updating serveradmin password..."; page3.Actions.Add(action); action = new InstallAction(ActionTypes.UpdateConfig); action.Description = "Updating system configuration..."; page3.Actions.Add(action); FinishPage page4 = new FinishPage(); wizard.Controls.AddRange(new Control[] { page1, page2, page3, page4 }); wizard.LinkPages(); wizard.SelectedPage = page1; //show wizard IWin32Window owner = args[Global.Parameters.ParentForm] as IWin32Window; return(form.ShowModal(owner)); }
public static DialogResult SetupBase(object obj) { Hashtable args = Utils.GetSetupParameters(obj); string shellVersion = Utils.GetStringSetupParameter(args, "ShellVersion"); string componentId = Utils.GetStringSetupParameter(args, "ComponentId"); AppConfig.LoadConfiguration(); InstallerForm form = new InstallerForm(); Wizard wizard = form.Wizard; wizard.SetupVariables.SetupAction = SetupActions.Setup; LoadSetupVariablesFromConfig(wizard.SetupVariables, componentId); wizard.SetupVariables.WebSiteId = AppConfig.GetComponentSettingStringValue(componentId, "WebSiteId"); wizard.SetupVariables.WebSiteIP = AppConfig.GetComponentSettingStringValue(componentId, "WebSiteIP"); wizard.SetupVariables.WebSitePort = AppConfig.GetComponentSettingStringValue(componentId, "WebSitePort"); wizard.SetupVariables.WebSiteDomain = AppConfig.GetComponentSettingStringValue(componentId, "WebSiteDomain"); wizard.SetupVariables.NewWebSite = AppConfig.GetComponentSettingBooleanValue(componentId, "NewWebSite"); wizard.SetupVariables.NewVirtualDirectory = AppConfig.GetComponentSettingBooleanValue(componentId, "NewVirtualDirectory"); wizard.SetupVariables.VirtualDirectory = AppConfig.GetComponentSettingStringValue(componentId, "VirtualDirectory"); wizard.SetupVariables.IISVersion = Utils.GetVersionSetupParameter(args, "IISVersion"); //IntroductionPage page1 = new IntroductionPage(); WebPage page2 = new WebPage(); ExpressInstallPage page3 = new ExpressInstallPage(); //create install currentScenario InstallAction action = new InstallAction(ActionTypes.UpdateWebSite); action.Description = "Updating web site..."; page3.Actions.Add(action); action = new InstallAction(ActionTypes.UpdateConfig); action.Description = "Updating system configuration..."; page3.Actions.Add(action); FinishPage page4 = new FinishPage(); wizard.Controls.AddRange(new Control[] { page2, page3, page4 }); wizard.LinkPages(); wizard.SelectedPage = page2; //show wizard IWin32Window owner = args["ParentForm"] as IWin32Window; return(form.ShowModal(owner)); }
public static DialogResult Uninstall(object obj) { Hashtable args = Utils.GetSetupParameters(obj); string shellVersion = Utils.GetStringSetupParameter(args, Global.Parameters.ShellVersion); // var setupVariables = new SetupVariables { ComponentId = Utils.GetStringSetupParameter(args, Global.Parameters.ComponentId), IISVersion = Global.IISVersion, SetupAction = SetupActions.Uninstall }; // AppConfig.LoadConfiguration(); InstallerForm form = new InstallerForm(); Wizard wizard = form.Wizard; wizard.SetupVariables = setupVariables; // AppConfig.LoadComponentSettings(wizard.SetupVariables); // IntroductionPage page1 = new IntroductionPage(); ConfirmUninstallPage page2 = new ConfirmUninstallPage(); UninstallPage page3 = new UninstallPage(); //create uninstall currentScenario InstallAction action = new InstallAction(ActionTypes.DeleteShortcuts); action.Description = "Deleting shortcuts..."; action.Log = "- Delete shortcuts"; action.Name = "Login to SolidCP.url"; page3.Actions.Add(action); page2.UninstallPage = page3; FinishPage page4 = new FinishPage(); wizard.Controls.AddRange(new Control[] { page1, page2, page3, page4 }); wizard.LinkPages(); wizard.SelectedPage = page1; //show wizard IWin32Window owner = args[Global.Parameters.ParentForm] as IWin32Window; return(form.ShowModal(owner)); }
/// <summary> /// Displays process progress. /// </summary> public void Start() { this.progressBar.Value = 0; string component = Wizard.SetupVariables.ComponentFullName; string componentId = Wizard.SetupVariables.ComponentId; Version iisVersion = Wizard.SetupVariables.IISVersion; bool iis7 = (iisVersion.Major >= 7); try { this.lblProcess.Text = "Creating uninstall script..."; this.Update(); //default actions List <InstallAction> actions = GetUninstallActions(componentId); //add external actions foreach (InstallAction extAction in Actions) { actions.Add(extAction); } //process actions for (int i = 0, progress = 1; i < actions.Count; i++, progress++) { InstallAction action = actions[i]; this.lblProcess.Text = action.Description; this.progressBar.Value = progress * 100 / actions.Count; this.Update(); try { switch (action.ActionType) { case ActionTypes.DeleteRegistryKey: DeleteRegistryKey(action.Key, action.Empty); break; case ActionTypes.DeleteDirectory: DeleteDirectory(action.Path); break; case ActionTypes.DeleteDatabase: DeleteDatabase( action.ConnectionString, action.Name); break; case ActionTypes.DeleteDatabaseUser: DeleteDatabaseUser( action.ConnectionString, action.UserName); break; case ActionTypes.DeleteDatabaseLogin: DeleteDatabaseLogin( action.ConnectionString, action.UserName); break; case ActionTypes.DeleteWebSite: if (iis7) { DeleteIIS7WebSite(action.SiteId); } else { DeleteWebSite(action.SiteId); } break; case ActionTypes.DeleteVirtualDirectory: DeleteVirtualDirectory( action.SiteId, action.Name); break; case ActionTypes.DeleteUserMembership: DeleteUserMembership(action.Domain, action.Name, action.Membership); break; case ActionTypes.DeleteUserAccount: DeleteUserAccount(action.Domain, action.Name); break; case ActionTypes.DeleteApplicationPool: if (iis7) { DeleteIIS7ApplicationPool(action.Name); } else { DeleteApplicationPool(action.Name); } break; case ActionTypes.UpdateConfig: UpdateSystemConfiguration(action.Key); break; case ActionTypes.DeleteShortcuts: DeleteShortcuts(action.Name); break; case ActionTypes.UnregisterWindowsService: UnregisterWindowsService(action.Path, action.Name); break; } } catch (Exception ex) { if (!Utils.IsThreadAbortException(ex)) { Log.WriteError("Uninstall error", ex); } } } this.progressBar.Value = 100; } catch (Exception ex) { if (Utils.IsThreadAbortException(ex)) { return; } ShowError(); this.Wizard.Close(); } this.lblProcess.Text = "Completed. Click Next to continue."; this.AllowMoveNext = true; this.AllowCancel = true; }
internal List <InstallAction> GetUninstallActions(string componentId) { var list = new List <InstallAction>(); InstallAction action = null; //windows service string serviceName = AppConfig.GetComponentSettingStringValue(componentId, "ServiceName"); string serviceFile = AppConfig.GetComponentSettingStringValue(componentId, "ServiceFile"); string installFolder = AppConfig.GetComponentSettingStringValue(componentId, "InstallFolder"); if (!string.IsNullOrEmpty(serviceName) && !string.IsNullOrEmpty(serviceFile)) { action = new InstallAction(ActionTypes.UnregisterWindowsService); action.Path = Path.Combine(installFolder, serviceFile); action.Name = serviceName; action.Description = "Removing Windows service..."; action.Log = string.Format("- Remove {0} Windows service", serviceName); list.Add(action); } if (ServiceController.GetServices().Any(s => s.DisplayName.Equals(Global.Parameters.SchedulerServiceName, StringComparison.CurrentCultureIgnoreCase))) { action = new InstallAction(ActionTypes.UnregisterWindowsService) { Path = Path.Combine(installFolder, "bin", Global.Parameters.SchedulerServiceFileName), Name = Global.Parameters.SchedulerServiceName, Description = "Removing Windows service..." }; action.Log = string.Format("- Remove {0} Windows service", action.Name); list.Add(action); } //database bool deleteDatabase = AppConfig.GetComponentSettingBooleanValue(componentId, "NewDatabase"); if (deleteDatabase) { string connectionString = AppConfig.GetComponentSettingStringValue(componentId, "InstallConnectionString"); string database = AppConfig.GetComponentSettingStringValue(componentId, "Database"); action = new InstallAction(ActionTypes.DeleteDatabase); action.ConnectionString = connectionString; action.Name = database; action.Description = "Deleting database..."; action.Log = string.Format("- Delete {0} database", database); list.Add(action); } //database user bool deleteDatabaseUser = AppConfig.GetComponentSettingBooleanValue(componentId, "NewDatabaseUser"); if (deleteDatabaseUser) { string connectionString = AppConfig.GetComponentSettingStringValue(componentId, "InstallConnectionString"); string username = AppConfig.GetComponentSettingStringValue(componentId, "DatabaseUser"); action = new InstallAction(ActionTypes.DeleteDatabaseUser); action.ConnectionString = connectionString; action.UserName = username; action.Description = "Deleting database user..."; action.Log = string.Format("- Delete {0} database user", username); list.Add(action); } //database login (from standalone setup) string loginName = AppConfig.GetComponentSettingStringValue(componentId, "DatabaseLogin"); if (!string.IsNullOrEmpty(loginName)) { string connectionString = AppConfig.GetComponentSettingStringValue(componentId, "InstallConnectionString"); action = new InstallAction(ActionTypes.DeleteDatabaseLogin); action.ConnectionString = connectionString; action.UserName = loginName; action.Description = "Deleting database login..."; action.Log = string.Format("- Delete {0} database login", loginName); list.Add(action); } //virtual directory bool deleteVirtualDirectory = AppConfig.GetComponentSettingBooleanValue(componentId, "NewVirtualDirectory"); if (deleteVirtualDirectory) { string virtualDirectory = AppConfig.GetComponentSettingStringValue(componentId, "VirtualDirectory"); string virtualDirectorySiteId = AppConfig.GetComponentSettingStringValue(componentId, "WebSiteId"); action = new InstallAction(ActionTypes.DeleteVirtualDirectory); action.SiteId = virtualDirectorySiteId; action.Name = virtualDirectory; action.Description = "Deleting virtual directory..."; action.Log = string.Format("- Delete {0} virtual directory...", virtualDirectory); list.Add(action); } //web site bool deleteWebSite = AppConfig.GetComponentSettingBooleanValue(componentId, "NewWebSite"); if (deleteWebSite) { string siteId = AppConfig.GetComponentSettingStringValue(componentId, "WebSiteId"); action = new InstallAction(ActionTypes.DeleteWebSite); action.SiteId = siteId; action.Description = "Deleting web site..."; action.Log = string.Format("- Delete {0} web site", siteId); list.Add(action); } //application pool bool deleteAppPool = AppConfig.GetComponentSettingBooleanValue(componentId, "NewApplicationPool"); if (deleteAppPool) { string appPoolName = AppConfig.GetComponentSettingStringValue(componentId, "ApplicationPool"); if (string.IsNullOrEmpty(appPoolName)) { appPoolName = WebUtils.SolidCP_ADMIN_POOL; } action = new InstallAction(ActionTypes.DeleteApplicationPool); action.Name = appPoolName; action.Description = "Deleting application pool..."; action.Log = string.Format("- Delete {0} application pool", appPoolName); list.Add(action); } //user account bool deleteUserAccount = AppConfig.GetComponentSettingBooleanValue(componentId, "NewUserAccount"); if (deleteUserAccount) { string username = AppConfig.GetComponentSettingStringValue(componentId, "UserAccount"); string domain = AppConfig.GetComponentSettingStringValue(componentId, "Domain"); //membership if (Wizard.SetupVariables.UserMembership != null && Wizard.SetupVariables.UserMembership.Length > 0) { action = new InstallAction(ActionTypes.DeleteUserMembership); action.Name = username; action.Domain = domain; action.Membership = Wizard.SetupVariables.UserMembership; action.Description = "Removing user account membership..."; action.Log = string.Format("- Remove {0} user account membership", username); list.Add(action); } action = new InstallAction(ActionTypes.DeleteUserAccount); action.Name = username; action.Domain = domain; action.Description = "Deleting user account..."; action.Log = string.Format("- Delete {0} user account", username); list.Add(action); } //directory string path = AppConfig.GetComponentSettingStringValue(componentId, "InstallFolder"); if (!string.IsNullOrEmpty(path)) { action = new InstallAction(ActionTypes.DeleteDirectory); action.Path = path; action.Description = "Deleting application folder..."; action.Log = string.Format("- Delete {0} folder", path); list.Add(action); } //config action = new InstallAction(ActionTypes.UpdateConfig); action.Key = componentId; action.Description = "Updating configuration settings..."; action.Log = "- Update configuration settings"; list.Add(action); return(list); }
public static DialogResult UpdateBase(object obj, string minimalInstallerVersion, string versionsToUpgrade, bool updateSql, InstallAction versionSpecificAction) { Hashtable args = Utils.GetSetupParameters(obj); string shellVersion = Utils.GetStringSetupParameter(args, "ShellVersion"); Version version = new Version(shellVersion); if (version < new Version(minimalInstallerVersion)) { MessageBox.Show( string.Format("SolidCP Installer {0} or higher required.", minimalInstallerVersion), "Setup Wizard", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(DialogResult.Cancel); } // Load application configuration AppConfig.LoadConfiguration(); // var setupVariables = new SetupVariables { SetupAction = SetupActions.Update, ComponentId = Utils.GetStringSetupParameter(args, "ComponentId"), IISVersion = Global.IISVersion, }; // Load setup variables from app.config AppConfig.LoadComponentSettings(setupVariables); // InstallerForm form = new InstallerForm(); form.Wizard.SetupVariables = setupVariables; Wizard wizard = form.Wizard; // Initialize setup variables with the data received from update procedure wizard.SetupVariables.BaseDirectory = Utils.GetStringSetupParameter(args, "BaseDirectory"); wizard.SetupVariables.UpdateVersion = Utils.GetStringSetupParameter(args, "UpdateVersion"); wizard.SetupVariables.InstallerFolder = Utils.GetStringSetupParameter(args, "InstallerFolder"); wizard.SetupVariables.Installer = Utils.GetStringSetupParameter(args, "Installer"); wizard.SetupVariables.InstallerType = Utils.GetStringSetupParameter(args, "InstallerType"); wizard.SetupVariables.InstallerPath = Utils.GetStringSetupParameter(args, "InstallerPath"); #region Support for multiple versions to upgrade from // Find out whether the version(s) are supported in that upgrade var upgradeSupported = versionsToUpgrade.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Any(x => { return(VersionEquals(wizard.SetupVariables.Version, x.Trim())); }); // if (upgradeSupported == false) { Log.WriteInfo( String.Format("Could not find a suitable version to upgrade. Current version: {0}; Versions supported: {1};", wizard.SetupVariables.Version, versionsToUpgrade)); // MessageBox.Show( "Your current software version either is not supported or could not be upgraded at this time. Please send log file from the installer to the software vendor for further research on the issue.", "Setup Wizard", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return(DialogResult.Cancel); } #endregion // IntroductionPage introPage = new IntroductionPage(); LicenseAgreementPage licPage = new LicenseAgreementPage(); ExpressInstallPage page2 = new ExpressInstallPage(); //create install currentScenario InstallAction action = new InstallAction(ActionTypes.StopApplicationPool); action.Description = "Stopping IIS Application Pool..."; page2.Actions.Add(action); action = new InstallAction(ActionTypes.Backup); action.Description = "Backing up..."; page2.Actions.Add(action); action = new InstallAction(ActionTypes.DeleteFiles); action.Description = "Deleting files..."; action.Path = "setup\\delete.txt"; page2.Actions.Add(action); action = new InstallAction(ActionTypes.CopyFiles); action.Description = "Copying files..."; page2.Actions.Add(action); if (versionSpecificAction != null) { page2.Actions.Add(versionSpecificAction); } if (updateSql) { action = new InstallAction(ActionTypes.ExecuteSql); action.Description = "Updating database..."; action.Path = "setup\\update_db.sql"; page2.Actions.Add(action); } action = new InstallAction(ActionTypes.UpdateConfig); action.Description = "Updating system configuration..."; page2.Actions.Add(action); action = new InstallAction(ActionTypes.StartApplicationPool); action.Description = "Starting IIS Application Pool..."; page2.Actions.Add(action); FinishPage page3 = new FinishPage(); wizard.Controls.AddRange(new Control[] { introPage, licPage, page2, page3 }); wizard.LinkPages(); wizard.SelectedPage = introPage; //show wizard IWin32Window owner = args["ParentForm"] as IWin32Window; return(form.ShowModal(owner)); }