示例#1
0
文件: Utils.cs 项目: pasamsin/SolidCP
        /// <summary>
        /// Beware: Web site component-dependent logic
        /// </summary>
        /// <param name="setupVariables"></param>
        /// <returns></returns>
        public static string ResolveAspNet40RegistrationToolPath_Iis7(SetupVariables setupVariables)
        {
            // By default we fallback to the corresponding tool version based on the platform bitness
            var util = Environment.Is64BitOperatingSystem ? AspNet40RegistrationToolx64 : AspNet40RegistrationToolx86;

            // Choose appropriate tool version for IIS 7
            if (setupVariables.IISVersion.Major >= 7 && setupVariables.SetupAction == SetupActions.Update)
            {
                // Evaluate app pool settings on x64 platform only when update is running
                if (Environment.Is64BitOperatingSystem == true)
                {
                    // Change to x86 tool version if the component's app pool is in WOW64 mode
                    using (var srvman = new Microsoft.Web.Administration.ServerManager())
                    {
                        // Retrieve the component's app pool
                        var appPoolObj = srvman.ApplicationPools[setupVariables.WebApplicationPoolName];
                        // We are
                        if (appPoolObj == null)
                        {
                            throw new ArgumentException(String.Format("Could not find '{0}' web application pool", setupVariables.WebApplicationPoolName), "appPoolObj");
                        }
                        // Check app pool mode
                        else if (appPoolObj.Enable32BitAppOnWin64 == true)
                        {
                            util = AspNet40RegistrationToolx86;
                        }
                    }
                }
            }
            // Build path to the tool
            return(Path.Combine(Environment.GetEnvironmentVariable("WINDIR"), util));
        }
示例#2
0
        public static void LoadComponentSettings(SetupVariables vars)
        {
            XmlNode componentNode = GetComponentConfig(vars.ComponentId);

            //
            if (componentNode != null)
            {
                var typeRef = vars.GetType();
                //
                XmlNodeList settingNodes = componentNode.SelectNodes("settings/add");
                //
                foreach (XmlNode item in settingNodes)
                {
                    var sName  = XmlUtils.GetXmlAttribute(item, "key");
                    var sValue = XmlUtils.GetXmlAttribute(item, "value");
                    //
                    if (String.IsNullOrEmpty(sName))
                    {
                        continue;
                    }
                    //
                    var objProperty = typeRef.GetProperty(sName);
                    //
                    if (objProperty == null)
                    {
                        continue;
                    }
                    // Set property value
                    objProperty.SetValue(vars, Convert.ChangeType(sValue, objProperty.PropertyType), null);
                }
            }
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
 public static void LoadSetupVariablesFromConfig(SetupVariables vars, string componentId)
 {
     vars.InstallationFolder   = AppConfig.GetComponentSettingStringValue(componentId, "InstallFolder");
     vars.ComponentName        = AppConfig.GetComponentSettingStringValue(componentId, "ComponentName");
     vars.ComponentCode        = AppConfig.GetComponentSettingStringValue(componentId, "ComponentCode");
     vars.ComponentDescription = AppConfig.GetComponentSettingStringValue(componentId, "ComponentDescription");
     vars.ComponentId          = componentId;
     vars.ApplicationName      = AppConfig.GetComponentSettingStringValue(componentId, "ApplicationName");
     vars.Version  = AppConfig.GetComponentSettingStringValue(componentId, "Release");
     vars.Instance = AppConfig.GetComponentSettingStringValue(componentId, "Instance");
 }
示例#6
0
        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));
        }
示例#7
0
        private bool SiteBindingsExist(SetupVariables setupVariables)
        {
            bool   iis7   = (setupVariables.IISVersion.Major >= 7);
            string ip     = setupVariables.WebSiteIP;
            string port   = setupVariables.WebSitePort;
            string domain = setupVariables.WebSiteDomain;

            string siteId = iis7 ?
                            WebUtils.GetIIS7SiteIdByBinding(ip, port, domain) :
                            WebUtils.GetSiteIdByBinding(ip, port, domain);

            return(siteId != null);
        }
示例#8
0
 private void InitSetupVaribles(SetupVariables setupVariables)
 {
     try
     {
         Wizard.SetupVariables = setupVariables.Clone();
     }
     catch (Exception ex)
     {
         if (Utils.IsThreadAbortException(ex))
         {
             return;
         }
     }
 }
示例#9
0
文件: Utils.cs 项目: pasamsin/SolidCP
        public static string ExecAspNetRegistrationToolCommand(SetupVariables setupVariables, string arguments)
        {
            //
            var util = (setupVariables.IISVersion.Major == 6) ? Utils.ResolveAspNet40RegistrationToolPath_Iis6(setupVariables) : Utils.ResolveAspNet40RegistrationToolPath_Iis7(setupVariables);
            //
            // Create a specific process start info set to redirect its standard output for further processing
            ProcessStartInfo info = new ProcessStartInfo(util)
            {
                WindowStyle            = ProcessWindowStyle.Hidden,
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                Arguments = arguments
            };

            //
            Log.WriteInfo(String.Format("Starting aspnet_regiis.exe {0}", info.Arguments));
            //
            var process = default(Process);
            //
            var psOutput = String.Empty;

            //
            try
            {
                // Start the process
                process = Process.Start(info);
                // Read the output
                psOutput = process.StandardOutput.ReadToEnd();
                // Wait for the completion
                process.WaitForExit();
            }
            catch (Exception ex)
            {
                Log.WriteError("Could not execute ASP.NET Registration Tool command", ex);
            }
            finally
            {
                if (process != null)
                {
                    process.Close();
                }
            }
            // Trace output data for troubleshooting purposes
            Log.WriteInfo(psOutput);
            //
            Log.WriteInfo(String.Format("Finished aspnet_regiis.exe {0}", info.Arguments));
            //
            return(psOutput);
        }
示例#10
0
        public static void InitInstall(Hashtable args, SetupVariables vars)
        {
            AppConfig.LoadConfiguration();

            LoadSetupVariablesFromParameters(vars, args);

            vars.SetupAction        = SetupActions.Install;
            vars.InstallationFolder = Path.Combine(Global.DefaultInstallPathRoot, vars.ComponentName);
            vars.ComponentId        = Guid.NewGuid().ToString();
            vars.Instance           = String.Empty;

            //create component settings node
            //vars.ComponentConfig = AppConfig.CreateComponentConfig(vars.ComponentId);
            //add default component settings
            //CreateComponentSettingsFromSetupVariables(vars, vars.ComponentId);
        }
示例#11
0
文件: Utils.cs 项目: pasamsin/SolidCP
        public static WebExtensionStatus GetAspNetWebExtensionStatus_Iis6(SetupVariables setupVariables)
        {
            WebExtensionStatus status = WebExtensionStatus.Allowed;

            if (setupVariables.IISVersion.Major == 6)
            {
                status = WebExtensionStatus.NotInstalled;
                string path;
                if (Utils.IsWin64() && !Utils.IIS32Enabled())
                {
                    //64-bit
                    path = Path.Combine(OS.GetWindowsDirectory(), @"Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll");
                }
                else
                {
                    //32-bit
                    path = Path.Combine(OS.GetWindowsDirectory(), @"Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll");
                }
                path = path.ToLower();
                using (DirectoryEntry iis = new DirectoryEntry("IIS://LocalHost/W3SVC"))
                {
                    PropertyValueCollection values = iis.Properties["WebSvcExtRestrictionList"];
                    for (int i = 0; i < values.Count; i++)
                    {
                        string val = values[i] as string;
                        if (!string.IsNullOrEmpty(val))
                        {
                            string strVal = val.ToString().ToLower();

                            if (strVal.Contains(path))
                            {
                                if (strVal[0] == '1')
                                {
                                    status = WebExtensionStatus.Allowed;
                                }
                                else
                                {
                                    status = WebExtensionStatus.Prohibited;
                                }
                                break;
                            }
                        }
                    }
                }
            }
            return(status);
        }
示例#12
0
文件: Utils.cs 项目: pasamsin/SolidCP
        public static string ResolveAspNet40RegistrationToolPath_Iis6(SetupVariables setupVariables)
        {
            // By default we fallback to the corresponding tool version based on the platform bitness
            var util = Environment.Is64BitOperatingSystem ? AspNet40RegistrationToolx64 : AspNet40RegistrationToolx86;

            // Choose appropriate tool version for IIS 6
            if (setupVariables.IISVersion.Major == 6)
            {
                // Change to x86 tool version on x64 w/ "Enable32bitAppOnWin64" flag enabled
                if (Environment.Is64BitOperatingSystem == true && Utils.IIS32Enabled())
                {
                    util = AspNet40RegistrationToolx86;
                }
            }
            // Build path to the tool
            return(Path.Combine(Environment.GetEnvironmentVariable("WINDIR"), util));
        }
示例#13
0
        internal static CheckStatuses CheckOS(SetupVariables setupVariables, out string details)
        {
            details = string.Empty;
            try
            {
                //check OS version
                OS.WindowsVersion version = OS.GetVersion();
                details = OS.GetName(version);
                if (Utils.IsWin64())
                {
                    details += " x64";
                }
                Log.WriteInfo(string.Format("OS check: {0}", details));

                if (!(version == OS.WindowsVersion.WindowsServer2003 ||
                      version == OS.WindowsVersion.WindowsServer2008 ||
                      version == OS.WindowsVersion.WindowsServer2008R2 ||
                      version == OS.WindowsVersion.WindowsServer2012 ||
                      version == OS.WindowsVersion.WindowsServer2012R2 ||
                      version == OS.WindowsVersion.WindowsServer2016 ||
                      version == OS.WindowsVersion.WindowsVista ||
                      version == OS.WindowsVersion.Windows7 ||
                      version == OS.WindowsVersion.Windows8 ||
                      version == OS.WindowsVersion.Windows10))
                {
                    details = "OS required: Windows Server 2008/2008 R2/2012 or Windows Vista/7/8.";
                    Log.WriteError(string.Format("OS check: {0}", details), null);
#if DEBUG
                    return(CheckStatuses.Warning);
#endif
#if !DEBUG
                    return(CheckStatuses.Error);
#endif
                }
                return(CheckStatuses.Success);
            }
            catch (Exception ex)
            {
                if (!Utils.IsThreadAbortException(ex))
                {
                    Log.WriteError("Check error", ex);
                }
                details = "Unexpected error";
                return(CheckStatuses.Error);
            }
        }
示例#14
0
        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));
        }
示例#15
0
        private bool CheckDiskSpace(SetupVariables setupVariables, out string details)
        {
            details = string.Empty;

            long spaceRequired = FileUtils.CalculateFolderSize(setupVariables.InstallerFolder);

            if (string.IsNullOrEmpty(setupVariables.InstallationFolder))
            {
                details = "Installation folder is not specified.";
                return(false);
            }
            string drive = null;

            try
            {
                drive = Path.GetPathRoot(Path.GetFullPath(setupVariables.InstallationFolder));
            }
            catch
            {
                details = "Installation folder is invalid.";
                return(false);
            }

            ulong freeBytesAvailable, totalBytes, freeBytes;

            if (FileUtils.GetDiskFreeSpaceEx(drive, out freeBytesAvailable, out totalBytes, out freeBytes))
            {
                long freeSpace = Convert.ToInt64(freeBytesAvailable);
                if (spaceRequired > freeSpace)
                {
                    details = string.Format("There is not enough space on the disk ({0} required, {1} available)",
                                            FileUtils.SizeToMB(spaceRequired), FileUtils.SizeToMB(freeSpace));
                    return(false);
                }
            }
            else
            {
                details = "I/O error";
                return(false);
            }
            return(true);
        }
示例#16
0
        internal static CheckStatuses CheckIIS32Mode(SetupVariables setupVariables, out string details)
        {
            details = string.Empty;
            CheckStatuses ret = CheckIISVersion(setupVariables, out details);

            if (ret == CheckStatuses.Error)
            {
                return(ret);
            }

            try
            {
                //IIS 6
                if (setupVariables.IISVersion.Major == 6)
                {
                    //x64
                    if (Utils.IsWin64())
                    {
                        if (!Utils.IIS32Enabled())
                        {
                            Log.WriteInfo("IIS 32-bit mode disabled");
                            EnableIIS32Mode();
                            details = "IIS 32-bit mode has been enabled.";
                            Log.WriteInfo(string.Format("IIS 32-bit mode check: {0}", details));
                            return(CheckStatuses.Warning);
                        }
                    }
                }
                return(CheckStatuses.Success);
            }
            catch (Exception ex)
            {
                if (!Utils.IsThreadAbortException(ex))
                {
                    Log.WriteError("Check error", ex);
                }
                details = "Unexpected error";
                return(CheckStatuses.Error);
            }
        }
示例#17
0
        public static object 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),
                SetupAction = SetupActions.Uninstall,
                IISVersion  = Global.IISVersion
            };

            //
            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();

            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));
        }
示例#18
0
        private CheckStatuses CheckSCPEnterpriseServer(SetupVariables setupVariables, out string details)
        {
            details = "";
            try
            {
                if (SiteBindingsExist(setupVariables))
                {
                    details = string.Format("Site with specified bindings already exists (ip: {0}, port: {1}, domain: {2})",
                                            setupVariables.WebSiteIP, setupVariables.WebSitePort, setupVariables.WebSiteDomain);
                    Log.WriteError(string.Format("Site bindings check: {0}", details), null);
                    return(CheckStatuses.Error);
                }

                if (AccountExists(setupVariables))
                {
                    details = string.Format("Windows account already exists: {0}\\{1}",
                                            setupVariables.UserDomain, setupVariables.UserAccount);
                    Log.WriteError(string.Format("Account check: {0}", details), null);
                    return(CheckStatuses.Error);
                }

                if (!CheckDiskSpace(setupVariables, out details))
                {
                    Log.WriteError(string.Format("Disk space check: {0}", details), null);
                    return(CheckStatuses.Error);
                }

                return(CheckStatuses.Success);
            }
            catch (Exception ex)
            {
                if (!Utils.IsThreadAbortException(ex))
                {
                    Log.WriteError("Check error", ex);
                }
                details = "Unexpected error";
                return(CheckStatuses.Error);
            }
        }
示例#19
0
        protected static void LoadSetupVariablesFromSetupXml(string xml, SetupVariables setupVariables)
        {
            if (string.IsNullOrEmpty(xml))
            {
                return;
            }
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            XmlNodeList settings = doc.SelectNodes("settings/add");

            foreach (XmlElement node in settings)
            {
                string key   = node.GetAttribute("key").ToLower();
                string value = node.GetAttribute("value");
                switch (key)
                {
                case "installationfolder":
                    setupVariables.InstallationFolder = value;
                    break;

                case "websitedomain":
                    setupVariables.WebSiteDomain = value;
                    break;

                case "websiteip":
                    setupVariables.WebSiteIP = value;
                    break;

                case "websiteport":
                    setupVariables.WebSitePort = value;
                    break;

                case "serveradminpassword":
                    setupVariables.ServerAdminPassword = value;
                    break;

                case "serverpassword":
                    setupVariables.ServerPassword = value;
                    break;

                case "useraccount":
                    setupVariables.UserAccount = value;
                    break;

                case "userpassword":
                    setupVariables.UserPassword = value;
                    break;

                case "userdomain":
                    setupVariables.UserDomain = value;
                    break;

                case "enterpriseserverurl":
                    setupVariables.EnterpriseServerURL = value;
                    break;

                case "licensekey":
                    setupVariables.LicenseKey = value;
                    break;

                case "dbinstallconnectionstring":
                    setupVariables.DbInstallConnectionString = value;
                    break;
                }
            }
        }
示例#20
0
        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));
        }
示例#21
0
文件: Utils.cs 项目: pasamsin/SolidCP
        public static bool CheckAspNet40Registered(SetupVariables setupVariables)
        {
            var regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\ASP.NET\\4.0.30319.0");

            return(regkey != null);
        }
示例#22
0
        internal static CheckStatuses CheckASPNET(SetupVariables setupVariables, out string details)
        {
            details = "ASP.NET 4.0 is installed.";
            CheckStatuses ret = CheckStatuses.Success;

            try
            {
                // IIS 6
                if (setupVariables.IISVersion.Major == 6)
                {
                    //
                    if (Utils.CheckAspNet40Registered(setupVariables) == false)
                    {
                        // Register ASP.NET 4.0
                        Utils.RegisterAspNet40(setupVariables);
                        //
                        ret     = CheckStatuses.Warning;
                        details = AspNet40HasBeenInstalledMessage;
                    }
                    // Enable ASP.NET 4.0 Web Server Extension if it is prohibited
                    if (Utils.GetAspNetWebExtensionStatus_Iis6(setupVariables) == WebExtensionStatus.Prohibited)
                    {
                        Utils.EnableAspNetWebExtension_Iis6();
                    }
                }
                // IIS 7 on Windows 2008 and higher
                else
                {
                    if (!IsWebServerRoleInstalled())
                    {
                        details = "Web Server (IIS) role is not installed on your server. Run Server Manager to add Web Server (IIS) role.";
                        Log.WriteInfo(string.Format("ASP.NET check: {0}", details));
                        return(CheckStatuses.Error);
                    }
                    if (!IsAspNetRoleServiceInstalled())
                    {
                        details = "ASP.NET role service is not installed on your server. Run Server Manager to add ASP.NET role service.";
                        Log.WriteInfo(string.Format("ASP.NET check: {0}", details));
                        return(CheckStatuses.Error);
                    }
                    // Register ASP.NET 4.0
                    if (Utils.CheckAspNet40Registered(setupVariables) == false)
                    {
                        // Register ASP.NET 4.0
                        Utils.RegisterAspNet40(setupVariables);
                        //
                        ret     = CheckStatuses.Warning;
                        details = AspNet40HasBeenInstalledMessage;
                    }
                }
                // Log details
                Log.WriteInfo(string.Format("ASP.NET check: {0}", details));
                //
                return(ret);
            }
            catch (Exception ex)
            {
                if (!Utils.IsThreadAbortException(ex))
                {
                    Log.WriteError("Check error", ex);
                }
                details = "Unexpected error";
#if DEBUG
                return(CheckStatuses.Warning);
#endif
#if !DEBUG
                return(CheckStatuses.Error);
#endif
            }
        }
示例#23
0
        internal static object InstallBase(object obj, string minimalInstallerVersion)
        {
            Hashtable args = Utils.GetSetupParameters(obj);

            //check CS version
            string  shellVersion = Utils.GetStringSetupParameter(args, Global.Parameters.ShellVersion);
            var     shellMode    = Utils.GetStringSetupParameter(args, Global.Parameters.ShellMode);
            Version version      = new Version(shellVersion);
            //
            var setupVariables = new SetupVariables
            {
                SetupAction = SetupActions.Install,
                IISVersion  = Global.IISVersion
            };

            //
            InitInstall(args, setupVariables);
            //Unattended setup
            LoadSetupVariablesFromSetupXml(setupVariables.SetupXml, setupVariables);
            //
            var sam = new ServerActionManager(setupVariables);

            // Prepare installation defaults
            sam.PrepareDistributiveDefaults();
            // Silent Installer Mode
            if (shellMode.Equals(Global.SilentInstallerShell, StringComparison.OrdinalIgnoreCase))
            {
                if (version < new Version(minimalInstallerVersion))
                {
                    Utils.ShowConsoleErrorMessage(Global.Messages.InstallerVersionIsObsolete, minimalInstallerVersion);
                    //
                    return(false);
                }

                try
                {
                    var success = true;
                    //
                    setupVariables.ServerPassword = Utils.GetStringSetupParameter(args, Global.Parameters.ServerPassword);
                    //
                    sam.ActionError += new EventHandler <ActionErrorEventArgs>((object sender, ActionErrorEventArgs e) =>
                    {
                        Utils.ShowConsoleErrorMessage(e.ErrorMessage);
                        //
                        Log.WriteError(e.ErrorMessage);
                        //
                        success = false;
                    });
                    //
                    sam.Start();
                    //
                    return(success);
                }
                catch (Exception ex)
                {
                    Log.WriteError("Failed to install the component", ex);
                    //
                    return(false);
                }
            }
            else
            {
                if (version < new Version(minimalInstallerVersion))
                {
                    MessageBox.Show(String.Format(Global.Messages.InstallerVersionIsObsolete, minimalInstallerVersion), "Setup Wizard", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    //
                    return(DialogResult.Cancel);
                }

                var form   = new InstallerForm();
                var wizard = form.Wizard;
                wizard.SetupVariables = setupVariables;
                //
                wizard.ActionManager = sam;

                //create wizard pages
                var introPage = new IntroductionPage();
                var licPage   = new LicenseAgreementPage();
                //
                var page1 = new ConfigurationCheckPage();
                page1.Checks.AddRange(new ConfigurationCheck[]
                {
                    new ConfigurationCheck(CheckTypes.OperationSystem, "Operating System Requirement")
                    {
                        SetupVariables = setupVariables
                    },
                    new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement")
                    {
                        SetupVariables = setupVariables
                    },
                    new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement")
                    {
                        SetupVariables = setupVariables
                    }
                });
                //
                var page2 = new InstallFolderPage();
                var page3 = new WebPage();
                var page4 = new UserAccountPage();
                var page5 = new ServerPasswordPage();
                var page6 = new ExpressInstallPage2();
                var page7 = new FinishPage();
                //
                wizard.Controls.AddRange(new Control[] { introPage, licPage, page1, page2, page3, page4, page5, page6, page7 });
                wizard.LinkPages();
                wizard.SelectedPage = introPage;

                //show wizard
                IWin32Window owner = args["ParentForm"] as IWin32Window;
                return(form.ShowModal(owner));
            }
        }
示例#24
0
        protected static void LoadComponentVariablesFromSetupXml(string componentCode, string xml, SetupVariables setupVariables)
        {
            if (string.IsNullOrEmpty(componentCode))
            {
                return;
            }

            if (string.IsNullOrEmpty(xml))
            {
                return;
            }

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);

                string xpath = string.Format("components/component[@code=\"{0}\"]", componentCode);

                XmlNode componentNode = doc.SelectSingleNode(xpath);
                if (componentNode != null)
                {
                    LoadSetupVariablesFromSetupXml(componentNode.InnerXml, setupVariables);
                }
            }
            catch (Exception ex)
            {
                Log.WriteError("Unattended setup error", ex);
                throw;
            }
        }
示例#25
0
        internal static object InstallBase(object obj, string minimalInstallerVersion)
        {
            Hashtable args = Utils.GetSetupParameters(obj);
            //check CS version
            var shellMode      = Utils.GetStringSetupParameter(args, Global.Parameters.ShellMode);
            var version        = new Version(Utils.GetStringSetupParameter(args, Global.Parameters.ShellVersion));
            var setupVariables = new SetupVariables
            {
                SetupAction         = SetupActions.Install,
                ConfigurationFile   = "web.config",
                WebSiteIP           = Global.WebDavPortal.DefaultIP, //empty - to detect IP
                WebSitePort         = Global.WebDavPortal.DefaultPort,
                WebSiteDomain       = String.Empty,
                NewWebSite          = true,
                NewVirtualDirectory = false,
                ConnectionString    = Global.WebDavPortal.AspNetConnectionStringFormat,
                DatabaseServer      = Global.WebDavPortal.DefaultDbServer,
                Database            = Global.WebDavPortal.DefaultDatabase,
                CreateDatabase      = false,
                UserAccount         = Global.WebDavPortal.ServiceAccount
            };

            //
            InitInstall(args, setupVariables);
            //Unattended setup
            LoadSetupVariablesFromSetupXml(setupVariables.SetupXml, setupVariables);
            //
            var wam = new WebDavPortalActionManager(setupVariables);

            //
            wam.PrepareDistributiveDefaults();
            //
            if (shellMode.Equals(Global.SilentInstallerShell, StringComparison.OrdinalIgnoreCase))
            {
                if (version < new Version(minimalInstallerVersion))
                {
                    Utils.ShowConsoleErrorMessage(Global.Messages.InstallerVersionIsObsolete, minimalInstallerVersion);
                    //
                    return(false);
                }

                try
                {
                    var success = true;
                    //
                    setupVariables.EnterpriseServerURL = Utils.GetStringSetupParameter(args, Global.Parameters.EnterpriseServerUrl);
                    //
                    wam.ActionError += new EventHandler <ActionErrorEventArgs>((object sender, ActionErrorEventArgs e) =>
                    {
                        Utils.ShowConsoleErrorMessage(e.ErrorMessage);
                        //
                        Log.WriteError(e.ErrorMessage);
                        //
                        success = false;
                    });
                    //
                    wam.Start();
                    //
                    return(success);
                }
                catch (Exception ex)
                {
                    Log.WriteError("Failed to install the component", ex);
                    //
                    return(false);
                }
            }
            else
            {
                if (version < new Version(minimalInstallerVersion))
                {
                    //
                    MessageBox.Show(String.Format(Global.Messages.InstallerVersionIsObsolete, minimalInstallerVersion), "Setup Wizard", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    //
                    return(DialogResult.Cancel);
                }
                //
                InstallerForm form   = new InstallerForm();
                Wizard        wizard = form.Wizard;
                wizard.SetupVariables = setupVariables;
                wizard.ActionManager  = wam;
                //Unattended setup
                LoadSetupVariablesFromSetupXml(wizard.SetupVariables.SetupXml, wizard.SetupVariables);

                //create wizard pages
                var introPage             = new IntroductionPage();
                var licPage               = new LicenseAgreementPage();
                var page1                 = new ConfigurationCheckPage();
                ConfigurationCheck check1 = new ConfigurationCheck(CheckTypes.OperationSystem, "Operating System Requirement")
                {
                    SetupVariables = setupVariables
                };
                ConfigurationCheck check2 = new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement")
                {
                    SetupVariables = setupVariables
                };
                ConfigurationCheck check3 = new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement")
                {
                    SetupVariables = setupVariables
                };
                page1.Checks.AddRange(new ConfigurationCheck[] { check1, check2, check3 });
                var page2 = new InstallFolderPage();
                var page3 = new WebPage();
                var page4 = new UserAccountPage();
                //var page5 = new UrlPage();
                var page5 = new ExpressInstallPage2();

                var page6 = new FinishPage();
                wizard.Controls.AddRange(new Control[] { introPage, licPage, page1, page2, page3, page4, page5, page6 });
                wizard.LinkPages();
                wizard.SelectedPage = introPage;
                //show wizard
                IWin32Window owner = args[Global.Parameters.ParentForm] as IWin32Window;
                return(form.ShowModal(owner));
            }
        }
示例#26
0
        internal static object InstallBase(object obj, string minimalInstallerVersion)
        {
            Hashtable args = Utils.GetSetupParameters(obj);

            //check CS version
            string  shellVersion = Utils.GetStringSetupParameter(args, Global.Parameters.ShellVersion);
            var     shellMode    = Utils.GetStringSetupParameter(args, Global.Parameters.ShellMode);
            Version version      = new Version(shellVersion);

            //********************  Server ****************
            var serverSetup = new SetupVariables
            {
                ComponentId          = Guid.NewGuid().ToString(),
                Instance             = String.Empty,
                ComponentName        = Global.Server.ComponentName,
                ComponentCode        = Global.Server.ComponentCode,
                ComponentDescription = Global.Server.ComponentDescription,
                //
                ServerPassword = Guid.NewGuid().ToString("N").Substring(0, 10),
                //
                SetupAction     = SetupActions.Install,
                IISVersion      = Global.IISVersion,
                ApplicationName = Utils.GetStringSetupParameter(args, Global.Parameters.ApplicationName),
                Version         = Utils.GetStringSetupParameter(args, Global.Parameters.Version),
                Installer       = Utils.GetStringSetupParameter(args, Global.Parameters.Installer),
                InstallerPath   = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerPath),
                SetupXml        = Utils.GetStringSetupParameter(args, Global.Parameters.SetupXml),
                //
                InstallerFolder    = Path.Combine(Utils.GetStringSetupParameter(args, Global.Parameters.InstallerFolder), Global.Server.ComponentName),
                InstallerType      = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerType).Replace(Global.StandaloneServer.SetupController, Global.Server.SetupController),
                InstallationFolder = Path.Combine(Path.Combine(Utils.GetSystemDrive(), "SolidCP"), Global.Server.ComponentName),
                ConfigurationFile  = "web.config",
            };

            // Load config file
            AppConfig.LoadConfiguration();
            //
            LoadComponentVariablesFromSetupXml(serverSetup.ComponentCode, serverSetup.SetupXml, serverSetup);
            //
            //serverSetup.ComponentConfig = AppConfig.CreateComponentConfig(serverSetup.ComponentId);
            //serverSetup.RemoteServerUrl = GetUrl(serverSetup.WebSiteDomain, serverSetup.WebSiteIP, serverSetup.WebSitePort);
            //
            //CreateComponentSettingsFromSetupVariables(serverSetup, serverSetup.ComponentId);

            //********************  Enterprise Server ****************
            var esServerSetup = new SetupVariables
            {
                ComponentId = Guid.NewGuid().ToString(),
                SetupAction = SetupActions.Install,
                IISVersion  = Global.IISVersion,
                //
                Instance             = String.Empty,
                ComponentName        = Global.EntServer.ComponentName,
                ComponentCode        = Global.EntServer.ComponentCode,
                ApplicationName      = Utils.GetStringSetupParameter(args, Global.Parameters.ApplicationName),
                Version              = Utils.GetStringSetupParameter(args, Global.Parameters.Version),
                ComponentDescription = Global.EntServer.ComponentDescription,
                Installer            = Utils.GetStringSetupParameter(args, Global.Parameters.Installer),
                InstallerFolder      = Path.Combine(Utils.GetStringSetupParameter(args, Global.Parameters.InstallerFolder), Global.EntServer.ComponentName),
                InstallerType        = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerType).Replace(Global.StandaloneServer.SetupController, Global.EntServer.SetupController),
                InstallationFolder   = Path.Combine(Path.Combine(Utils.GetSystemDrive(), "SolidCP"), Global.EntServer.ComponentName),
                InstallerPath        = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerPath),
                SetupXml             = Utils.GetStringSetupParameter(args, Global.Parameters.SetupXml),
                //
                ConfigurationFile         = "web.config",
                ConnectionString          = Global.EntServer.AspNetConnectionStringFormat,
                DatabaseServer            = Global.EntServer.DefaultDbServer,
                Database                  = Global.EntServer.DefaultDatabase,
                CreateDatabase            = true,
                UpdateServerAdminPassword = true,
                //
                WebSiteIP     = Global.EntServer.DefaultIP,
                WebSitePort   = Global.EntServer.DefaultPort,
                WebSiteDomain = String.Empty,
            };

            //
            LoadComponentVariablesFromSetupXml(esServerSetup.ComponentCode, esServerSetup.SetupXml, esServerSetup);
            //
            //esServerSetup.ComponentConfig = AppConfig.CreateComponentConfig(esServerSetup.ComponentId);
            //
            //CreateComponentSettingsFromSetupVariables(esServerSetup, esServerSetup.ComponentId);

            //********************  Portal ****************
            #region Portal Setup Variables
            var portalSetup = new SetupVariables
            {
                ComponentId = Guid.NewGuid().ToString(),
                SetupAction = SetupActions.Install,
                IISVersion  = Global.IISVersion,
                //
                Instance             = String.Empty,
                ComponentName        = Global.WebPortal.ComponentName,
                ComponentCode        = Global.WebPortal.ComponentCode,
                ApplicationName      = Utils.GetStringSetupParameter(args, Global.Parameters.ApplicationName),
                Version              = Utils.GetStringSetupParameter(args, Global.Parameters.Version),
                ComponentDescription = Global.WebPortal.ComponentDescription,
                Installer            = Utils.GetStringSetupParameter(args, Global.Parameters.Installer),
                InstallerFolder      = Path.Combine(Utils.GetStringSetupParameter(args, Global.Parameters.InstallerFolder), Global.WebPortal.ComponentName),
                InstallerType        = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerType).Replace(Global.StandaloneServer.SetupController, Global.WebPortal.SetupController),
                InstallationFolder   = Path.Combine(Path.Combine(Utils.GetSystemDrive(), "SolidCP"), Global.WebPortal.ComponentName),
                InstallerPath        = Utils.GetStringSetupParameter(args, Global.Parameters.InstallerPath),
                SetupXml             = Utils.GetStringSetupParameter(args, Global.Parameters.SetupXml),
                //
                ConfigurationFile   = "web.config",
                EnterpriseServerURL = Global.WebPortal.DefaultEntServURL,
            };
            //
            LoadComponentVariablesFromSetupXml(portalSetup.ComponentCode, portalSetup.SetupXml, portalSetup);
            //
            //portalSetup.ComponentConfig = AppConfig.CreateComponentConfig(portalSetup.ComponentId);
            //
            //CreateComponentSettingsFromSetupVariables(portalSetup, portalSetup.ComponentId);
            #endregion

            //
            var stdssam = new StandaloneServerActionManager(serverSetup, esServerSetup, portalSetup);
            //
            stdssam.PrepareDistributiveDefaults();

            //
            if (shellMode.Equals(Global.SilentInstallerShell, StringComparison.OrdinalIgnoreCase))
            {
                // Validate the setup controller's bootstrapper version
                if (version < new Version(minimalInstallerVersion))
                {
                    Utils.ShowConsoleErrorMessage(Global.Messages.InstallerVersionIsObsolete, minimalInstallerVersion);
                    //
                    return(false);
                }

                try
                {
                    var success = true;

                    // Retrieve SolidCP Enterprise Server component's settings from the command-line
                    var adminPassword = Utils.GetStringSetupParameter(args, Global.Parameters.ServerAdminPassword);
                    // This has been designed to make an installation process via Web PI more secure
                    if (String.IsNullOrEmpty(adminPassword))
                    {
                        // Set serveradmin password
                        esServerSetup.ServerAdminPassword = Guid.NewGuid().ToString();
                        // Set peer admin password
                        esServerSetup.PeerAdminPassword = Guid.NewGuid().ToString();
                        // Instruct provisioning scenario to enter the application in SCPA mode (Setup Control Panel Acounts)
                        esServerSetup.EnableScpaMode = true;
                    }
                    else
                    {
                        esServerSetup.ServerAdminPassword = esServerSetup.PeerAdminPassword = adminPassword;
                    }
                    //
                    esServerSetup.Database                  = Utils.GetStringSetupParameter(args, Global.Parameters.DatabaseName);
                    esServerSetup.DatabaseServer            = Utils.GetStringSetupParameter(args, Global.Parameters.DatabaseServer);
                    esServerSetup.DbInstallConnectionString = SqlUtils.BuildDbServerMasterConnectionString(
                        esServerSetup.DatabaseServer,
                        Utils.GetStringSetupParameter(args, Global.Parameters.DbServerAdmin),
                        Utils.GetStringSetupParameter(args, Global.Parameters.DbServerAdminPassword)
                        );

                    //
                    stdssam.ActionError += new EventHandler <ActionErrorEventArgs>((object sender, ActionErrorEventArgs e) =>
                    {
                        Utils.ShowConsoleErrorMessage(e.ErrorMessage);
                        //
                        Log.WriteError(e.ErrorMessage);
                        //
                        success = false;
                    });
                    //
                    stdssam.Start();
                    //
                    return(success);
                }
                catch (Exception ex)
                {
                    Log.WriteError("Failed to install the component", ex);
                    //
                    return(false);
                }
            }
            else
            {
                // Validate the setup controller's bootstrapper version
                if (version < new Version(minimalInstallerVersion))
                {
                    MessageBox.Show(String.Format(Global.Messages.InstallerVersionIsObsolete, minimalInstallerVersion),
                                    "Setup Wizard", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    //
                    return(DialogResult.Cancel);
                }

                // NOTE: there is no assignment to SetupVariables property of the wizard as usually because we have three components
                // to setup here and thus we have created SwapSetupVariablesAction setup action to swap corresponding variables
                // back and forth while executing the installation scenario.
                InstallerForm form   = new InstallerForm();
                Wizard        wizard = form.Wizard;
                wizard.SetupVariables = serverSetup;
                // Assign corresponding action manager to the wizard.
                wizard.ActionManager = stdssam;
                // Initialize wizard pages and their properties
                var introPage = new IntroductionPage();
                var licPage   = new LicenseAgreementPage();
                var page2     = new ConfigurationCheckPage();
                // Setup prerequisites validation
                page2.Checks.AddRange(new ConfigurationCheck[] {
                    new ConfigurationCheck(CheckTypes.OperationSystem, "Operating System Requirement")
                    {
                        SetupVariables = serverSetup
                    },
                    new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement")
                    {
                        SetupVariables = serverSetup
                    },
                    new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement")
                    {
                        SetupVariables = serverSetup
                    },
                    // Validate Server installation prerequisites
                    new ConfigurationCheck(CheckTypes.SCPServer, "SolidCP Server Requirement")
                    {
                        SetupVariables = serverSetup
                    },
                    // Validate EnterpriseServer installation prerequisites
                    new ConfigurationCheck(CheckTypes.SCPEnterpriseServer, "SolidCP Enterprise Server Requirement")
                    {
                        SetupVariables = esServerSetup
                    },
                    // Validate WebPortal installation prerequisites
                    new ConfigurationCheck(CheckTypes.SCPPortal, "SolidCP Portal Requirement")
                    {
                        SetupVariables = portalSetup
                    }
                });
                // Assign WebPortal setup variables set to acquire corresponding settings
                var page3 = new WebPage {
                    SetupVariables = portalSetup
                };
                // Assign EnterpriseServer setup variables set to acquire corresponding settings
                var page4 = new DatabasePage {
                    SetupVariables = esServerSetup
                };
                // Assign EnterpriseServer setup variables set to acquire corresponding settings
                var page5 = new ServerAdminPasswordPage
                {
                    SetupVariables = esServerSetup,
                    NoteText       = "Note: Both serveradmin and admin accounts will use this password. You can always change password for serveradmin or admin accounts through control panel."
                };
                //
                var page6 = new ExpressInstallPage2();
                // Assign WebPortal setup variables set to acquire corresponding settings
                var page7 = new SetupCompletePage {
                    SetupVariables = portalSetup
                };
                //
                wizard.Controls.AddRange(new Control[] { introPage, licPage, page2, page3, page4, page5, page6, page7 });
                wizard.LinkPages();
                wizard.SelectedPage = introPage;
                // Run wizard
                IWin32Window owner = args[Global.Parameters.ParentForm] as IWin32Window;
                return(form.ShowModal(owner));
            }
        }