Exemple #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);
            //
            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"),
                    new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement"),
                    new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement")
                });
                //
                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));
            }
        }
		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");
				ConfigurationCheck check2 = new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement");
				ConfigurationCheck check3 = new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement");
				//
				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);
			}
		}
Exemple #3
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.WebPortal.DefaultIP,       //empty - to detect IP
                WebSitePort         = Global.WebPortal.DefaultPort,
                WebSiteDomain       = String.Empty,
                NewWebSite          = true,
                NewVirtualDirectory = false,
                EnterpriseServerURL = Global.WebPortal.DefaultEntServURL
            };

            //
            InitInstall(args, setupVariables);
            //
            var wam = new WebPortalActionManager(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");
                ConfigurationCheck check2 = new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement");
                ConfigurationCheck check3 = new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement");
                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 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[Global.Parameters.ParentForm] as IWin32Window;
                return(form.ShowModal(owner));
            }
        }
Exemple #4
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"), 
					new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement"), 
					new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement")
				});
				//
				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);
			}
		}
        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(), "WebsitePanel"), 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(), "WebsitePanel"), 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(), "WebsitePanel"), 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 WebsitePanel 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"),
                    new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement"),
                    new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement"),
                    // Validate Server installation prerequisites
                    new ConfigurationCheck(CheckTypes.WPServer, "WebsitePanel Server Requirement")
                    {
                        SetupVariables = serverSetup
                    },
                    // Validate EnterpriseServer installation prerequisites
                    new ConfigurationCheck(CheckTypes.WPEnterpriseServer, "WebsitePanel Enterprise Server Requirement")
                    {
                        SetupVariables = esServerSetup
                    },
                    // Validate WebPortal installation prerequisites
                    new ConfigurationCheck(CheckTypes.WPPortal, "WebsitePanel 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));
            }
        }
		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(), "WebsitePanel"), 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(), "WebsitePanel"), 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(), "WebsitePanel"), 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 WebsitePanel 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"), 
					new ConfigurationCheck(CheckTypes.IISVersion, "IIS Requirement"), 
					new ConfigurationCheck(CheckTypes.ASPNET, "ASP.NET Requirement"), 
					// Validate Server installation prerequisites
					new ConfigurationCheck(CheckTypes.WPServer, "WebsitePanel Server Requirement") { SetupVariables = serverSetup }, 
					// Validate EnterpriseServer installation prerequisites
					new ConfigurationCheck(CheckTypes.WPEnterpriseServer, "WebsitePanel Enterprise Server Requirement") { SetupVariables = esServerSetup }, 
					// Validate WebPortal installation prerequisites
					new ConfigurationCheck(CheckTypes.WPPortal, "WebsitePanel 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);
			}
		}