Esempio n. 1
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));
            }
        }
Esempio n. 2
0
        internal static object InstallBase(object obj, string minimalInstallerVersion)
        {
            var args = Utils.GetSetupParameters(obj);
            //check CS version
            var shellVersion = Utils.GetStringSetupParameter(args, "ShellVersion");
            var shellMode    = Utils.GetStringSetupParameter(args, Global.Parameters.ShellMode);
            var version      = new Version(shellVersion);

            var setupVariables = new SetupVariables
            {
                ConnectionString          = Global.EntServer.AspNetConnectionStringFormat,
                DatabaseServer            = Global.EntServer.DefaultDbServer,
                Database                  = Global.EntServer.DefaultDatabase,
                CreateDatabase            = true,
                WebSiteIP                 = Global.EntServer.DefaultIP,
                WebSitePort               = Global.EntServer.DefaultPort,
                WebSiteDomain             = String.Empty,
                NewWebSite                = true,
                NewVirtualDirectory       = false,
                ConfigurationFile         = "web.config",
                UpdateServerAdminPassword = true,
                ServerAdminPassword       = "",
            };

            //
            InitInstall(args, setupVariables);
            //
            var eam = new EntServerActionManager(setupVariables);

            //
            eam.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.ServerAdminPassword = Utils.GetStringSetupParameter(args, Global.Parameters.ServerAdminPassword);
                    setupVariables.Database            = Utils.GetStringSetupParameter(args, Global.Parameters.DatabaseName);
                    setupVariables.DatabaseServer      = Utils.GetStringSetupParameter(args, Global.Parameters.DatabaseServer);
                    //
                    setupVariables.DbInstallConnectionString = SqlUtils.BuildDbServerMasterConnectionString(
                        setupVariables.DatabaseServer,
                        Utils.GetStringSetupParameter(args, Global.Parameters.DbServerAdmin),
                        Utils.GetStringSetupParameter(args, Global.Parameters.DbServerAdminPassword)
                        );
                    //
                    eam.ActionError += new EventHandler <ActionErrorEventArgs>((object sender, ActionErrorEventArgs e) =>
                    {
                        Utils.ShowConsoleErrorMessage(e.ErrorMessage);
                        //
                        Log.WriteError(e.ErrorMessage);
                        //
                        success = false;
                    });
                    //
                    eam.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  = eam;

                //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 DatabasePage();
                var passwordPage = new ServerAdminPasswordPage();
                //
                var page6 = new ExpressInstallPage2();
                //
                var page7 = new FinishPage();
                wizard.Controls.AddRange(new Control[] { introPage, licPage, page1, page2, page3, page4, page5, passwordPage, page6, page7 });
                wizard.LinkPages();
                wizard.SelectedPage = introPage;

                //show wizard
                IWin32Window owner = args[Global.Parameters.ParentForm] as IWin32Window;
                return(form.ShowModal(owner));
            }
        }