public void Initialize()
        {
            this.Validate();

            if (!this.IsValid)
            {
                Program.warn("Cannot install. Please make sure all parameters are correct.");
                return;
            }

            Collection <IInstaller> installer = new Collection <IInstaller>();

            if (DatabaseName.Equal(this._sysdbs))
            {
                Program.warn("Invalid database name " + this.DatabaseName);
                return;
            }

            Domains.PostgreSQL postgresDomain = new Domains.PostgreSQL();
            installer.Add(new PostgreSQL
            {
                Password              = this.Password,
                MixERPPassword        = this.MixERPPassword,
                ReportUserPassword    = this.ReportUserPassword,
                IsInstalled           = postgresDomain.IsInstalled,
                PostgreSQL32Installer = ConfigurationHelper.GetPostgreSQL32(),
                PostgreSQL64Installer = ConfigurationHelper.GetPostgreSQL64(),
                InstallationDirectory = ConfigurationHelper.GetPostgreSQLInstallationDirectory()
            });


            installer.Add(new MixERP
            {
                InstallDirectory       = this.SiteDirectory,
                HostName               = this.SiteHostName,
                AppPoolName            = this.SiteAppPoolName,
                SiteName               = this.SiteName,
                PortNumber             = this.SitePortNumber,
                DatabaseName           = this.DatabaseName,
                MixERPPassword         = this.MixERPPassword,
                ReportUserPassword     = this.ReportUserPassword,
                DownloadDirectory      = ConfigurationHelper.GetDownloadDirectory(),
                ExtractDirectory       = ConfigurationHelper.GetExtractDirectory(),
                InstallerManifest      = ConfigurationHelper.GetInstallerManifest(),
                PostgreSQLBinDirectory = ConfigurationHelper.GetPostgreSQLBinDirectory()
            });


            installer.Add(new Database
            {
                DatabaseName       = this.DatabaseName,
                Password           = this.Password,
                MixERPPassword     = this.MixERPPassword,
                ReportUserPassword = this.ReportUserPassword
            });

            installer.Add(new DbScript
            {
                InstallerManifest = ConfigurationHelper.GetInstallerManifest(),
                InstallSample     = this.InstallSample,
                ExtractDirectory  = ConfigurationHelper.GetExtractDirectory(),
                DatabaseName      = this.DatabaseName,
                Office            = this.Office,
                Password          = this.Password
            });

            this.Installers = installer;
        }