Merge
This commit is contained in:
commit
67e83ee07c
18 changed files with 2567 additions and 894 deletions
|
@ -10,38 +10,38 @@
|
|||
<Media Id="1" EmbedCab="yes" Cabinet="websitepanel_cab" />
|
||||
<!-- Use WIX_UPGRADE_DETECTED -->
|
||||
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed."/>
|
||||
<Feature Id ="WebsitePanel" Title="Website Panel" Level="1" ConfigurableDirectory="WEBSITEPANELDIR" AllowAdvertise="no" Display="expand"
|
||||
<Feature Id ="WebsitePanel" Title="Website Panel" Level="1" ConfigurableDirectory="WSP_INSTALL_DIR" AllowAdvertise="no" Display="expand"
|
||||
Description="WebsitePanel is a complete portal for Cloud Computing Companies and IT Providers to automate the provisioning of a full suite of services on Windows servers.">
|
||||
<ComponentGroupRef Id="WebsitePanelFiles" />
|
||||
<Feature Id="ServerFeature" Title="$(var.ServerTitle)" Level="1" ConfigurableDirectory="INSTALLSERVERFOLDER" AllowAdvertise="no"
|
||||
<Feature Id="ServerFeature" Title="$(var.ServerTitle)" Level="1" ConfigurableDirectory="PI_SERVER_INSTALL_DIR" AllowAdvertise="no"
|
||||
Description="$(var.ServerDescription)">
|
||||
<ComponentGroupRef Id="ServerFiles" />
|
||||
</Feature>
|
||||
<Feature Id="EnterpriseServerFeature" Title="$(var.EServerTitle)" Level="1" ConfigurableDirectory="INSTALLENTERPRISESERVERFOLDER" AllowAdvertise="no"
|
||||
<Feature Id="EnterpriseServerFeature" Title="$(var.EServerTitle)" Level="1" ConfigurableDirectory="PI_ESERVER_INSTALL_DIR" AllowAdvertise="no"
|
||||
Description="$(var.ServerDescription)">
|
||||
<ComponentGroupRef Id="EnterpriseServerFiles" />
|
||||
<ComponentGroupRef Id="DatabaseInstallation"/>
|
||||
</Feature>
|
||||
<Feature Id="PortalFeature" Title="$(var.PortalTitle)" Level="1" ConfigurableDirectory="INSTALLPORTALFOLDER" AllowAdvertise="no"
|
||||
<Feature Id="PortalFeature" Title="$(var.PortalTitle)" Level="1" ConfigurableDirectory="PI_PORTAL_INSTALL_DIR" AllowAdvertise="no"
|
||||
Description="$(var.PortalDescription)">
|
||||
<ComponentGroupRef Id="PortalFiles" />
|
||||
</Feature>
|
||||
<Feature Id="SchedulerServiceFeature" Title="Scheduler Service" Level="1" ConfigurableDirectory="INSTALLSERVICEFOLDER" AllowAdvertise="no" Description="WebsitePanel Scheduler Service">
|
||||
<Feature Id="SchedulerServiceFeature" Title="Scheduler Service" Level="1" ConfigurableDirectory="PI_SCHEDULER_INSTALL_DIR" AllowAdvertise="no" Description="WebsitePanel Scheduler Service">
|
||||
<ComponentGroupRef Id="SchedulerServiceFiles" />
|
||||
</Feature>
|
||||
<Feature Id ="WDPortalFeature" Title="WebDAV Portal" Level="100" ConfigurableDirectory="INSTALLWEBDAVPORTALFOLDER" AllowAdvertise ="no"
|
||||
<Feature Id ="WDPortalFeature" Title="WebDAV Portal" Level="100" ConfigurableDirectory="PI_WDPORTAL_INSTALL_DIR" AllowAdvertise ="no"
|
||||
Description="WebsitePanel WebDAV Portal">
|
||||
<ComponentGroupRef Id="WebDavPortalFiles"/>
|
||||
</Feature>
|
||||
</Feature>
|
||||
<!--Destinations.-->
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="WEBSITEPANELDIR" Name="WebsitePanel">
|
||||
<Directory Id="INSTALLSERVICEFOLDER" Name="SchedulerService" />
|
||||
<Directory Id="INSTALLSERVERFOLDER" Name="Server" />
|
||||
<Directory Id="INSTALLENTERPRISESERVERFOLDER" Name="Enterprise Server" />
|
||||
<Directory Id="INSTALLPORTALFOLDER" Name="Portal" />
|
||||
<Directory Id="INSTALLWEBDAVPORTALFOLDER" Name="WebDavPortal"/>
|
||||
<Directory Id="WSP_INSTALL_DIR" Name="WebsitePanel">
|
||||
<Directory Id="PI_SERVER_INSTALL_DIR" Name="Server" />
|
||||
<Directory Id="PI_ESERVER_INSTALL_DIR" Name="Enterprise Server" />
|
||||
<Directory Id="PI_PORTAL_INSTALL_DIR" Name="Portal" />
|
||||
<Directory Id="PI_SCHEDULER_INSTALL_DIR" Name="SchedulerService" />
|
||||
<Directory Id="PI_WDPORTAL_INSTALL_DIR" Name="WebDavPortal"/>
|
||||
</Directory>
|
||||
</Directory>
|
||||
<EnsureTable Id="ComboBox"/>
|
||||
|
@ -565,11 +565,18 @@
|
|||
<Property Id="COMPFOUND_PORTAL" Secure="yes" Value="0" />
|
||||
<Property Id="COMPFOUND_WDPORTAL" Secure="yes" Value="1" />
|
||||
<Property Id="COMPFOUND_SCHEDULER" Secure="yes" Value="1" />
|
||||
<Property Id="COMPFOUND_SERVER_ID" Secure="yes" />
|
||||
<Property Id="COMPFOUND_ESERVER_ID" Secure="yes" />
|
||||
<Property Id="COMPFOUND_PORTAL_ID" Secure="yes" />
|
||||
<Property Id="COMPFOUND_WDPORTAL_ID" Secure="yes" />
|
||||
<Property Id="COMPFOUND_SCHEDULER_ID" Secure="yes" />
|
||||
<Property Id="COMPFOUND_SERVER_MAIN_CFG" Secure="yes" />
|
||||
<Property Id="COMPFOUND_ESERVER_MAIN_CFG" Secure="yes" />
|
||||
<Property Id="COMPFOUND_PORTAL_MAIN_CFG" Secure="yes" />
|
||||
<Property Id="COMPFOUND_WDPORTAL_MAIN_CFG" Secure="yes" />
|
||||
<Property Id="COMPFOUND_SCHEDULER_MAIN_CFG" Secure="yes" />
|
||||
<!--CustomActions.-->
|
||||
<!-- <CustomAction Id='AlreadyUpdated' Error='Product has already been updated to $(var.VERSION) or newer.' />
|
||||
<CustomAction Id='NoDowngrade' Error='A later version of [ProductName] is already installed.' /> -->
|
||||
<CustomAction Id="CA_CheckConnectionUI" BinaryKey="Assembly_CA" DllEntry="CheckConnectionUI" />
|
||||
<!-- <CustomAction Id='CA_PropertyFinalizeInstall' Property='CA_FinalizeInstall' Value='ConnectionString=[CONNECTIONSTRING];PreviousConnectionString=[PREVIOUSCONNECTIONSTRING];ServiceFolder=[SERVICEFOLDER];PreviousCryptoKey=[PREVIOUSCRYPTOKEY]' Return="check"/> -->
|
||||
<CustomAction Id="CA_PropertyFinalizeInstall" Property="CA_FinalizeInstall" Value="" Return="check"/>
|
||||
<CustomAction Id="CA_FinalizeInstall" BinaryKey ="Assembly_CA" DllEntry="FinalizeInstall" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes"/>
|
||||
<CustomAction Id="CA_PreInstallationAction" BinaryKey="Assembly_CA" DllEntry="PreInstallationAction" />
|
||||
|
@ -595,38 +602,54 @@
|
|||
<CustomAction Id="CA_SetEServerUrlUI" BinaryKey ="Assembly_CA" DllEntry="SetEServerUrlUI" />
|
||||
<CustomAction Id="CA_InstallWebFeatures" BinaryKey="Assembly_CA" DllEntry="InstallWebFeatures" Impersonate="no" />
|
||||
<!--Run corresponding install scripts.-->
|
||||
<!-- Prepare and backup when upgrading from old to new installer type.
|
||||
Yes, session variables and custom action data are identical almost for corresponding WebsitePanel components in prepare and install scripts.
|
||||
Prepare scripts must be run before normal installation process and file copying.-->
|
||||
<CustomAction Id="CA_PropertyOnServerPrepare" Property="CA_OnServerPrepare" Value ="ApplicationName=$(var.NAME);ComponentName=$(var.ServerTitle);ComponentCode=server;ComponentDescription=$(var.ServerDescription);Version=$(var.VERSION);InstallationFolder=[PI_SERVER_INSTALL_DIR];InstallerFolder=[WSP_INSTALL_DIR];Installer=Microsoft Windows Installer;InstallerType=MSI;InstallerPath=[OriginalDatabase];IISVersion=[];SetupXml=[];WebSiteIP=[PI_SERVER_IP];WebSitePort=[PI_SERVER_PORT];WebSiteDomain=[PI_SERVER_HOST];UserDomain=[PI_SERVER_DOMAIN];UserAccount=[PI_SERVER_LOGIN];UserPassword=[PI_SERVER_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE];ComponentId=[COMPFOUND_SERVER_ID];MainConfig=[COMPFOUND_SERVER_MAIN_CFG]" />
|
||||
<CustomAction Id="CA_OnServerPrepare" BinaryKey="Assembly_CA" DllEntry="OnServerPrepare" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<CustomAction Id="CA_PropertyOnEServerPrepare" Property="CA_OnEServerPrepare" Value ="ApplicationName=$(var.NAME);ComponentName=$(var.EServerTitle);ComponentCode=enterprise server;ComponentDescription=$(var.EServerDescription);Version=$(var.VERSION);InstallationFolder=[PI_ESERVER_INSTALL_DIR];InstallerFolder=[WSP_INSTALL_DIR];Installer=Microsoft Windows Installer;InstallerType=MSI;InstallerPath=[OriginalDatabase];IISVersion=[];SetupXml=[];WebSiteIP=[PI_ESERVER_IP];WebSitePort=[PI_ESERVER_PORT];WebSiteDomain=[PI_ESERVER_HOST];UserDomain=[PI_ESERVER_DOMAIN];UserAccount=[PI_ESERVER_LOGIN];UserPassword=[PI_ESERVER_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE];ComponentId=[COMPFOUND_ESERVER_ID];MainConfig=[COMPFOUND_ESERVER_MAIN_CFG]" />
|
||||
<CustomAction Id="CA_OnEServerPrepare" BinaryKey="Assembly_CA" DllEntry="OnEServerPrepare" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<CustomAction Id="CA_PropertyOnPortalPrepare" Property="CA_OnPortalPrepare" Value ="ApplicationName=$(var.NAME);ComponentName=$(var.PortalTitle);ComponentCode=portal;ComponentDescription=$(var.PortalDescription);Version=$(var.VERSION);InstallationFolder=[PI_PORTAL_INSTALL_DIR];InstallerFolder=[WSP_INSTALL_DIR];Installer=Microsoft Windows Installer;InstallerType=MSI;InstallerPath=[OriginalDatabase];IISVersion=[];SetupXml=[];WebSiteIP=[PI_PORTAL_IP];WebSitePort=[PI_PORTAL_PORT];WebSiteDomain=[PI_PORTAL_HOST];UserDomain=[PI_PORTAL_DOMAIN];UserAccount=[PI_PORTAL_LOGIN];UserPassword=[PI_PORTAL_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE];ComponentId=[COMPFOUND_PORTAL_ID];MainConfig=[COMPFOUND_PORTAL_MAIN_CFG]" />
|
||||
<CustomAction Id="CA_OnPortalPrepare" BinaryKey="Assembly_CA" DllEntry="OnPortalPrepare" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<!--Install scripts.-->
|
||||
<!--Server.-->
|
||||
<CustomAction Id="CA_PropertyOnServerInstall" Property="CA_OnServerInstall" Value="ApplicationName=$(var.NAME);ComponentName=$(var.ServerTitle);ComponentCode=server;ComponentDescription=$(var.ServerDescription);Version=$(var.VERSION);InstallationFolder=[INSTALLSERVERFOLDER];InstallerFolder=[WEBSITEPANELDIR];Installer=[];InstallerType=[];InstallerPath=[];IISVersion=[];SetupXml=[];WebSiteIP=[PI_SERVER_IP];WebSitePort=[PI_SERVER_PORT];WebSiteDomain=[PI_SERVER_HOST];UserDomain=[PI_SERVER_DOMAIN];UserAccount=[PI_SERVER_LOGIN];UserPassword=[PI_SERVER_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WEBSITEPANELDIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_PropertyOnServerInstall" Property="CA_OnServerInstall" Value="ApplicationName=$(var.NAME);ComponentName=$(var.ServerTitle);ComponentCode=server;ComponentDescription=$(var.ServerDescription);Version=$(var.VERSION);InstallationFolder=[PI_SERVER_INSTALL_DIR];InstallerFolder=[WSP_INSTALL_DIR];Installer=Microsoft Windows Installer;InstallerType=MSI;InstallerPath=[OriginalDatabase];IISVersion=[];SetupXml=[];WebSiteIP=[PI_SERVER_IP];WebSitePort=[PI_SERVER_PORT];WebSiteDomain=[PI_SERVER_HOST];UserDomain=[PI_SERVER_DOMAIN];UserAccount=[PI_SERVER_LOGIN];UserPassword=[PI_SERVER_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE];ComponentId=[COMPFOUND_SERVER_ID]" />
|
||||
<CustomAction Id="CA_OnServerInstall" BinaryKey ="Assembly_CA" DllEntry="OnServerInstall" Impersonate="no" Execute="deferred" HideTarget="no"/>
|
||||
<!--EServer.-->
|
||||
<CustomAction Id="CA_PropertyOnEServerInstall" Property="CA_OnEServerInstall" Value="ApplicationName=$(var.NAME);ComponentName=$(var.EServerTitle);ComponentCode=enterprise server;ComponentDescription=$(var.EServerDescription);Version=$(var.VERSION);InstallationFolder=[INSTALLENTERPRISESERVERFOLDER];InstallerFolder=[WEBSITEPANELDIR];Installer=[];InstallerType=[];InstallerPath=[];IISVersion=[];SetupXml=[];WebSiteIP=[PI_ESERVER_IP];WebSitePort=[PI_ESERVER_PORT];WebSiteDomain=[PI_ESERVER_HOST];UserDomain=[PI_ESERVER_DOMAIN];UserAccount=[PI_ESERVER_LOGIN];UserPassword=[PI_ESERVER_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WEBSITEPANELDIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_PropertyOnEServerInstall" Property="CA_OnEServerInstall" Value="ApplicationName=$(var.NAME);ComponentName=$(var.EServerTitle);ComponentCode=enterprise server;ComponentDescription=$(var.EServerDescription);Version=$(var.VERSION);InstallationFolder=[PI_ESERVER_INSTALL_DIR];InstallerFolder=[WSP_INSTALL_DIR];Installer=Microsoft Windows Installer;InstallerType=MSI;InstallerPath=[OriginalDatabase];IISVersion=[];SetupXml=[];WebSiteIP=[PI_ESERVER_IP];WebSitePort=[PI_ESERVER_PORT];WebSiteDomain=[PI_ESERVER_HOST];UserDomain=[PI_ESERVER_DOMAIN];UserAccount=[PI_ESERVER_LOGIN];UserPassword=[PI_ESERVER_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE];ComponentId=[COMPFOUND_ESERVER_ID]" />
|
||||
<CustomAction Id="CA_OnEServerInstall" BinaryKey ="Assembly_CA" DllEntry="OnEServerInstall" Impersonate="no" Execute="deferred" HideTarget="no"/>
|
||||
<!--Portal.-->
|
||||
<CustomAction Id="CA_PropertyOnPortalInstall" Property="CA_OnPortalInstall" Value="ApplicationName=$(var.NAME);ComponentName=$(var.PortalTitle);ComponentCode=portal;ComponentDescription=$(var.PortalDescription);Version=$(var.VERSION);InstallationFolder=[INSTALLPORTALFOLDER];InstallerFolder=[WEBSITEPANELDIR];Installer=[];InstallerType=[];InstallerPath=[];IISVersion=[];SetupXml=[];WebSiteIP=[PI_PORTAL_IP];WebSitePort=[PI_PORTAL_PORT];WebSiteDomain=[PI_PORTAL_HOST];UserDomain=[PI_PORTAL_DOMAIN];UserAccount=[PI_PORTAL_LOGIN];UserPassword=[PI_PORTAL_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WEBSITEPANELDIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_PropertyOnPortalInstall" Property="CA_OnPortalInstall" Value="ApplicationName=$(var.NAME);ComponentName=$(var.PortalTitle);ComponentCode=portal;ComponentDescription=$(var.PortalDescription);Version=$(var.VERSION);InstallationFolder=[PI_PORTAL_INSTALL_DIR];InstallerFolder=[WSP_INSTALL_DIR];Installer=Microsoft Windows Installer;InstallerType=MSI;InstallerPath=[OriginalDatabase];IISVersion=[];SetupXml=[];WebSiteIP=[PI_PORTAL_IP];WebSitePort=[PI_PORTAL_PORT];WebSiteDomain=[PI_PORTAL_HOST];UserDomain=[PI_PORTAL_DOMAIN];UserAccount=[PI_PORTAL_LOGIN];UserPassword=[PI_PORTAL_PASSWORD];ServerPassword=[SERVER_ACCESS_PASSWORD];EnterpriseServerUrl=[PI_ESERVER_URL];ServerAdminPassword=[SERVERADMIN_PASSWORD];DatabaseServer=[DB_SERVER];DatabaseName=[DB_DATABASE];DbServerAdmin=[DB_LOGIN];DbServerAdminPassword=[DB_PASSWORD];BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE];ComponentId=[COMPFOUND_PORTAL_ID]" />
|
||||
<CustomAction Id="CA_OnPortalInstall" BinaryKey ="Assembly_CA" DllEntry="OnPortalInstall" Impersonate="no" Execute="deferred" HideTarget="no"/>
|
||||
<!--Run corresponding uninstall scripts.-->
|
||||
<CustomAction Id="CA_PropertyOnServerRemove" Property="CA_OnServerRemove" Value="InstallerFolder=[WEBSITEPANELDIR];ComponentCode=server;BaseDirectory=[WEBSITEPANELDIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_PropertyOnServerRemove" Property="CA_OnServerRemove" Value="InstallerFolder=[WSP_INSTALL_DIR];ComponentCode=server;BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_OnServerRemove" BinaryKey="Assembly_CA" DllEntry="OnServerRemove" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<CustomAction Id="CA_PropertyOnEServerRemove" Property="CA_OnEServerRemove" Value="InstallerFolder=[WEBSITEPANELDIR];ComponentCode=enterprise server;BaseDirectory=[WEBSITEPANELDIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_PropertyOnEServerRemove" Property="CA_OnEServerRemove" Value="InstallerFolder=[WSP_INSTALL_DIR];ComponentCode=enterprise server;BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_OnEServerRemove" BinaryKey="Assembly_CA" DllEntry="OnEServerRemove" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<CustomAction Id="CA_PropertyOnPortalRemove" Property="CA_OnPortalRemove" Value="InstallerFolder=[WEBSITEPANELDIR];ComponentCode=portal;BaseDirectory=[WEBSITEPANELDIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_PropertyOnPortalRemove" Property="CA_OnPortalRemove" Value="InstallerFolder=[WSP_INSTALL_DIR];ComponentCode=portal;BaseDirectory=[WSP_INSTALL_DIR];MODE_UP=[WIX_UPGRADE_DETECTED];MODE_RUP=[UPGRADINGPRODUCTCODE]" />
|
||||
<CustomAction Id="CA_OnPortalRemove" BinaryKey="Assembly_CA" DllEntry="OnPortalRemove" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<!--Maintenance mode.-->
|
||||
<CustomAction Id="CA_PropertyMaintenanceServer" Property="CA_MaintenanceServer" Value="InstallerFolder=[WEBSITEPANELDIR];ComponentCode=server;BaseDirectory=[WEBSITEPANELDIR];ServerPassword=[SERVER_ACCESS_PASSWORD]" />
|
||||
<CustomAction Id="CA_PropertyMaintenanceServer" Property="CA_MaintenanceServer" Value="InstallerFolder=[WSP_INSTALL_DIR];ComponentCode=server;BaseDirectory=[WSP_INSTALL_DIR];ServerPassword=[SERVER_ACCESS_PASSWORD]" />
|
||||
<CustomAction Id="CA_MaintenanceServer" BinaryKey="Assembly_CA" DllEntry="MaintenanceServer" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<CustomAction Id="CA_PropertyMaintenanceEServer" Property="CA_MaintenanceEServer" Value="InstallerFolder=[WEBSITEPANELDIR];ComponentCode=enterprise server;BaseDirectory=[WEBSITEPANELDIR];ServerAdminPassword=[SERVERADMIN_PASSWORD];" />
|
||||
<CustomAction Id="CA_PropertyMaintenanceEServer" Property="CA_MaintenanceEServer" Value="InstallerFolder=[WSP_INSTALL_DIR];ComponentCode=enterprise server;BaseDirectory=[WSP_INSTALL_DIR];ServerAdminPassword=[SERVERADMIN_PASSWORD];" />
|
||||
<CustomAction Id="CA_MaintenanceEServer" BinaryKey="Assembly_CA" DllEntry="MaintenanceEServer" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<CustomAction Id="CA_PropertyMaintenancePortal" Property="CA_MaintenancePortal" Value="InstallerFolder=[WEBSITEPANELDIR];ComponentCode=portal;BaseDirectory=[WEBSITEPANELDIR];EnterpriseServerUrl=[PI_ESERVER_URL]" />
|
||||
<CustomAction Id="CA_PropertyMaintenancePortal" Property="CA_MaintenancePortal" Value="InstallerFolder=[WSP_INSTALL_DIR];ComponentCode=portal;BaseDirectory=[WSP_INSTALL_DIR];EnterpriseServerUrl=[PI_ESERVER_URL]" />
|
||||
<CustomAction Id="CA_MaintenancePortal" BinaryKey="Assembly_CA" DllEntry="MaintenancePortal" Impersonate="no" Execute="deferred" HideTarget="no" />
|
||||
<!---->
|
||||
<SetProperty Id="WEBSITEPANELDIR" After="AppSearch" Value="[WSP_BASE]">WSP_BASE</SetProperty>
|
||||
<SetProperty Id="WSP_INSTALL_DIR" After="AppSearch" Value="[WSP_BASE]">WSP_BASE</SetProperty>
|
||||
<SetProperty Id="ARPINSTALLLOCATION" Value="[WSP_INSTALL_DIR]" After="InstallValidate" Sequence="execute" />
|
||||
<CustomAction Id="CA_PreFillSettings" BinaryKey="Assembly_CA" DllEntry="PreFillSettings" />
|
||||
<!--Exe sequence.-->
|
||||
<InstallExecuteSequence>
|
||||
<!--Preinstall.-->
|
||||
<Custom Action="CA_InstallWebFeatures" Before="CostInitialize"><![CDATA[(&ServerFeature=3) OR (&EnterpriseServerFeature=3) OR (&PortalFeature=3) OR (&SchedulerServiceFeature=3) OR (&WDPortalFeature=3)]]></Custom>
|
||||
<!--<Custom Action="CA_PropertyFinalizeInstall" After='InstallValidate'/>
|
||||
<Custom Action="CA_FinalizeUnInstall" After="InstallValidate">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
|
||||
<Custom Action="CA_FinalizeInstall" After="InstallFiles" >NOT Installed or REINSTALL</Custom>-->
|
||||
<!--Preparation when "old to new installer update".-->
|
||||
<Custom Action="CA_PropertyOnServerPrepare" Before="InstallFiles"><![CDATA[COMPFOUND_SERVER=1 AND NOT WIX_UPGRADE_DETECTED AND NOT UPGRADINGPRODUCTCODE]]></Custom>
|
||||
<Custom Action="CA_OnServerPrepare" After="CA_PropertyOnServerPrepare"><![CDATA[COMPFOUND_SERVER=1 AND NOT WIX_UPGRADE_DETECTED AND NOT UPGRADINGPRODUCTCODE]]></Custom>
|
||||
<Custom Action="CA_PropertyOnEServerPrepare" Before="InstallFiles"><![CDATA[COMPFOUND_ESERVER=1 AND NOT WIX_UPGRADE_DETECTED AND NOT UPGRADINGPRODUCTCODE]]></Custom>
|
||||
<Custom Action="CA_OnEServerPrepare" After="CA_PropertyOnEServerPrepare"><![CDATA[COMPFOUND_ESERVER=1 AND NOT WIX_UPGRADE_DETECTED AND NOT UPGRADINGPRODUCTCODE]]></Custom>
|
||||
<Custom Action="CA_PropertyOnPortalPrepare" Before="InstallFiles"><![CDATA[COMPFOUND_PORTAL=1 AND NOT WIX_UPGRADE_DETECTED AND NOT UPGRADINGPRODUCTCODE]]></Custom>
|
||||
<Custom Action="CA_OnPortalPrepare" After="CA_PropertyOnPortalPrepare"><![CDATA[COMPFOUND_PORTAL=1 AND NOT WIX_UPGRADE_DETECTED AND NOT UPGRADINGPRODUCTCODE]]></Custom>
|
||||
<!--First Install. [Installed] property not used here because we distinguish per feature basis.-->
|
||||
<Custom Action="CA_PropertyOnServerInstall" After="InstallValidate"><![CDATA[(&ServerFeature=3) AND NOT(!ServerFeature=3)]]></Custom>
|
||||
<Custom Action="CA_OnServerInstall" After="InstallFiles"><![CDATA[(&ServerFeature=3) AND NOT(!ServerFeature=3)]]></Custom>
|
||||
|
@ -649,7 +672,7 @@
|
|||
<Custom Action="CA_PropertyMaintenancePortal" After="InstallInitialize"><![CDATA[&PortalFeature=-1 AND !PortalFeature=3]]></Custom>
|
||||
<Custom Action="CA_MaintenancePortal" After="CA_PropertyMaintenancePortal"><![CDATA[&PortalFeature=-1 AND !PortalFeature=3]]></Custom>
|
||||
<!---->
|
||||
<!--<Custom Action="CA_PreFillSettings" After="SetWEBSITEPANELDIR">1</Custom>-->
|
||||
<!--<Custom Action="CA_PreFillSettings" After="SetWSP_INSTALL_DIR">1</Custom>-->
|
||||
</InstallExecuteSequence>
|
||||
<InstallUISequence>
|
||||
<Custom Action="CA_PreFillSettings" Before="CA_InstallWebFeatures" />
|
||||
|
@ -668,10 +691,10 @@
|
|||
<ComponentRef Id="UpdateDatabaseSql"/>
|
||||
<ComponentRef Id="UpdateDatabaseWin"/>
|
||||
</ComponentGroup>
|
||||
<DirectoryRef Id="INSTALLENTERPRISESERVERFOLDER">
|
||||
<DirectoryRef Id="PI_ESERVER_INSTALL_DIR">
|
||||
<Component Id="InstallDatabaseSql" Guid="{81FB6008-A445-464F-8A0E-2EE076027FF3}">
|
||||
<CreateFolder />
|
||||
<Condition>(NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND NOT(DB_AUTH = "Windows Authentication")</Condition>
|
||||
<Condition>(NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND NOT(DB_AUTH = "Windows Authentication") AND (COMPFOUND_ESERVER="0")</Condition>
|
||||
<util:User Id="SqlUser" Name="[DB_LOGIN]" Password="[DB_PASSWORD]" CreateUser="no" />
|
||||
<sql:SqlDatabase Id="SqlDatabaseInstallSql" ConfirmOverwrite="yes" ContinueOnError="no" CreateOnInstall="yes" CreateOnReinstall="no" CreateOnUninstall="no"
|
||||
DropOnInstall="no" DropOnReinstall="no" DropOnUninstall="no"
|
||||
|
@ -684,18 +707,24 @@
|
|||
<Component Id="UpdateDatabaseSql" Guid="{089C02F9-D598-435E-8DA9-FC8AED00495C}">
|
||||
<Condition>NOT (Remove="ALL") AND NOT(DB_AUTH = "Windows Authentication")</Condition>
|
||||
<CreateFolder />
|
||||
<sql:SqlString Id="SqlVersionUpdateSql" SQL="IF NOT EXISTS (SELECT * FROM dbo.Versions WHERE DatabaseVersion = '$(var.sql_release_version)')
|
||||
BEGIN
|
||||
INSERT dbo.Versions (DatabaseVersion, BuildDate) VALUES ('$(var.sql_release_version)', '$(var.sql_build_date)')
|
||||
END"
|
||||
SqlDb="SqlDatabaseInstallWin" Sequence="2" User="SqlUser"
|
||||
ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no"/>
|
||||
<sql:SqlScript Id="SqlUpdateScriptSql" BinaryKey="UpdateDB" SqlDb="SqlDatabaseInstallSql" Sequence="3" User="SqlUser"
|
||||
ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no"/>
|
||||
</Component>
|
||||
<util:User Id="SqlUpdateUser" Name="[DB_LOGIN]" Password="[DB_PASSWORD]" CreateUser="no" />
|
||||
<sql:SqlDatabase Id="SqlDatabaseUpdateSql" ConfirmOverwrite="yes" ContinueOnError="no" CreateOnInstall="yes" CreateOnReinstall="yes" CreateOnUninstall="no"
|
||||
DropOnInstall="no" DropOnReinstall="no" DropOnUninstall="no"
|
||||
Server="[DB_SERVER]"
|
||||
Database="[DB_DATABASE]"
|
||||
User="SqlUpdateUser">
|
||||
<sql:SqlString Id="SqlVersionUpdateSql" SQL="IF NOT EXISTS (SELECT * FROM dbo.Versions WHERE DatabaseVersion = '$(var.sql_release_version)')
|
||||
BEGIN
|
||||
INSERT dbo.Versions (DatabaseVersion, BuildDate) VALUES ('$(var.sql_release_version)', '$(var.sql_build_date)')
|
||||
END"
|
||||
Sequence="2" ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no"/>
|
||||
<sql:SqlScript Id="SqlUpdateScriptSql" BinaryKey="UpdateDB" Sequence="3"
|
||||
ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no"/>
|
||||
</sql:SqlDatabase>
|
||||
</Component>
|
||||
<Component Id="InstallDatabaseWin" Guid="{C50FC58C-3EF3-452D-BA9B-C9513B4D941A}">
|
||||
<CreateFolder />
|
||||
<Condition>(NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND (DB_AUTH = "Windows Authentication")</Condition>
|
||||
<Condition>(NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND (DB_AUTH = "Windows Authentication") AND (COMPFOUND_ESERVER="0")</Condition>
|
||||
<sql:SqlDatabase Id="SqlDatabaseInstallWin" ConfirmOverwrite="yes" ContinueOnError="no" CreateOnInstall="yes" CreateOnReinstall="no" CreateOnUninstall="no"
|
||||
DropOnInstall="no" DropOnReinstall="no" DropOnUninstall="no"
|
||||
Server="[DB_SERVER]"
|
||||
|
@ -706,24 +735,29 @@
|
|||
<Component Id="UpdateDatabaseWin" Guid="{A2770B5C-DA46-4125-950F-73A640EB312B}">
|
||||
<Condition>NOT (Remove="ALL") AND (DB_AUTH = "Windows Authentication")</Condition>
|
||||
<CreateFolder />
|
||||
<sql:SqlString Id="SqlVersionUpdateWin" SQL="IF NOT EXISTS (SELECT * FROM dbo.Versions WHERE DatabaseVersion = '$(var.sql_release_version)')
|
||||
<sql:SqlDatabase Id="SqlDatabaseUpdateWin" ConfirmOverwrite="no" ContinueOnError="no" CreateOnInstall="yes" CreateOnReinstall="yes" CreateOnUninstall="no"
|
||||
DropOnInstall="no" DropOnReinstall="no" DropOnUninstall="no"
|
||||
Server="[DB_SERVER]"
|
||||
Database="[DB_DATABASE]">
|
||||
<sql:SqlString Id="SqlVersionUpdateWin" SQL="IF NOT EXISTS (SELECT * FROM dbo.Versions WHERE DatabaseVersion = '$(var.sql_release_version)')
|
||||
BEGIN
|
||||
INSERT dbo.Versions (DatabaseVersion, BuildDate) VALUES ('$(var.sql_release_version)', '$(var.sql_build_date)')
|
||||
END"
|
||||
SqlDb="SqlDatabaseInstallWin" Sequence="11" ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no"/>
|
||||
<sql:SqlScript Id="SqlUpdateScriptWin" BinaryKey="UpdateDB" SqlDb="SqlDatabaseInstallWin" Sequence="12"
|
||||
ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no" />
|
||||
Sequence="11" ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no"/>
|
||||
<sql:SqlScript Id="SqlUpdateScriptWin" BinaryKey="UpdateDB" Sequence="12"
|
||||
ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no" />
|
||||
</sql:SqlDatabase>
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
<Fragment>
|
||||
<ComponentGroup Id="WebsitePanelFiles">
|
||||
<Component Id ="comp_WebsitePanel_config" Directory="WEBSITEPANELDIR" Guid="{28CD1ADB-562C-4E38-A3B6-325D3A2718B1}">
|
||||
<Component Id ="comp_WebsitePanel_config" Directory="WSP_INSTALL_DIR" Guid="{28CD1ADB-562C-4E38-A3B6-325D3A2718B1}">
|
||||
<File Id="file_WebsitePanel_config" KeyPath="yes" Source="WebsitePanel.config" />
|
||||
</Component>
|
||||
<Component Id="comp_WebsitePanel_reg_locator" Directory="WEBSITEPANELDIR" Guid="{CC35E1B5-3E29-4AD1-991C-2904E4DCB099}">
|
||||
<Component Id="comp_WebsitePanel_reg_locator" Directory="WSP_INSTALL_DIR" Guid="{CC35E1B5-3E29-4AD1-991C-2904E4DCB099}">
|
||||
<RegistryValue Root='HKLM' Key='SOFTWARE\[ProductName]'
|
||||
Name='Base' Value='[WEBSITEPANELDIR]'
|
||||
Name='Base' Value='[WSP_INSTALL_DIR]'
|
||||
Type='string' />
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<?define SERVERBUILDPATH = "$(var.PROJECTPATH)\Build\$(var.BUILD)\Server\bin"?>
|
||||
<Fragment>
|
||||
<ComponentGroup Id="SchedulerServiceFiles">
|
||||
<Component Id="cmpSchedulerServiceFiles" Directory="INSTALLSERVICEFOLDER" Guid="{5E9F9A14-DB8E-4555-8D40-67110698F046}">
|
||||
<Component Id="cmpSchedulerServiceFiles" Directory="PI_SCHEDULER_INSTALL_DIR" Guid="{5E9F9A14-DB8E-4555-8D40-67110698F046}">
|
||||
<File Id="WebsitePanel.SchedulerService.exe" Source="$(var.BUILDPATH)\WebsitePanel.SchedulerService.exe" />
|
||||
<File Id="WebsitePanel.SchedulerService.exe.config" Source="$(var.BUILDPATH)\WebsitePanel.SchedulerService.exe.config" />
|
||||
<File Id="Ionic.Zip.Reduced.dll" Source="$(var.SERVERBUILDPATH)\Ionic.Zip.Reduced.dll"/>
|
||||
|
|
|
@ -232,7 +232,7 @@ namespace WebsitePanel.Setup.Actions
|
|||
{
|
||||
void IInstallAction.Run(SetupVariables vars)
|
||||
{
|
||||
try
|
||||
try
|
||||
{
|
||||
//
|
||||
Log.WriteStart(String.Format("Creating database user {0}", vars.Database));
|
||||
|
|
|
@ -394,7 +394,7 @@ namespace WebsitePanel.Setup.Actions
|
|||
}
|
||||
|
||||
// This flag is the opposite of poolExists flag
|
||||
vars.NewWebApplicationPool = !poolExists;
|
||||
vars.NewWebApplicationPool = !poolExists || vars.ComponentExists;
|
||||
|
||||
if (poolExists)
|
||||
{
|
||||
|
@ -501,7 +501,7 @@ namespace WebsitePanel.Setup.Actions
|
|||
|
||||
void IInstallAction.Run(SetupVariables vars)
|
||||
{
|
||||
var siteName = vars.ComponentFullName;
|
||||
var siteName = vars.ComponentFullName;
|
||||
var ip = vars.WebSiteIP;
|
||||
var port = vars.WebSitePort;
|
||||
var domain = vars.WebSiteDomain;
|
||||
|
@ -774,7 +774,7 @@ namespace WebsitePanel.Setup.Actions
|
|||
|
||||
void IInstallAction.Run(SetupVariables vars)
|
||||
{
|
||||
try
|
||||
try
|
||||
{
|
||||
Begin(LogStartInstallMessage);
|
||||
//
|
||||
|
|
|
@ -335,10 +335,10 @@ namespace WebsitePanel.Setup
|
|||
return files;
|
||||
}
|
||||
|
||||
public static void CopyFileToFolder(string sourceFile, string destinationFolder)
|
||||
public static void CopyFileToFolder(string sourceFile, string destinationFolder, string destinationFileName = "")
|
||||
{
|
||||
string fileName = Path.GetFileName(sourceFile);
|
||||
string destinationFile = Path.Combine(destinationFolder, fileName);
|
||||
string destinationFile = Path.Combine(destinationFolder, string.IsNullOrWhiteSpace(destinationFileName) ? fileName : destinationFileName);
|
||||
CopyFile(new FileInfo(sourceFile), destinationFile);
|
||||
}
|
||||
|
||||
|
|
|
@ -89,7 +89,8 @@ namespace WebsitePanel.Setup
|
|||
SwitchEntServer2AspNet40,
|
||||
SwitchWebPortal2AspNet40,
|
||||
ConfigureSecureSessionModuleInWebConfig,
|
||||
RestoreConfig
|
||||
RestoreConfig,
|
||||
UpdateXml
|
||||
}
|
||||
|
||||
public class InstallAction
|
||||
|
|
|
@ -398,7 +398,7 @@ namespace WebsitePanel.Setup
|
|||
/// <summary>
|
||||
/// Check for existing user
|
||||
/// </summary>
|
||||
internal static bool UserExists(string domain, string userName)
|
||||
public static bool UserExists(string domain, string userName)
|
||||
{
|
||||
bool found = false;
|
||||
// check whether user account already exists
|
||||
|
|
|
@ -249,6 +249,12 @@ namespace WebsitePanel.Setup
|
|||
|
||||
public string BaseDirectory { get; set; }
|
||||
|
||||
public string SpecialBaseDirectory { get; set; }
|
||||
public IDictionary<string, string> FileNameMap { get; set; }
|
||||
public IDictionary<string, string> SessionVariables { get; set; }
|
||||
public IDictionary<string, string[]> XmlData { get; set; } // XPath, Value.
|
||||
public bool ComponentExists { get; set; }
|
||||
|
||||
public string UpdateVersion { get; set; }
|
||||
|
||||
public string EnterpriseServerURL { get; set; }
|
||||
|
@ -278,7 +284,8 @@ namespace WebsitePanel.Setup
|
|||
public string ServiceName { get; set; }
|
||||
|
||||
public string ConfigurationFile { get; set; }
|
||||
|
||||
private bool m_UseUserCredentials = true;
|
||||
public bool UseUserCredentials { get { return m_UseUserCredentials; } set { m_UseUserCredentials = value; } }
|
||||
public string ServiceFile { get; set; }
|
||||
|
||||
public string LicenseKey { get; set; }
|
||||
|
|
|
@ -768,7 +768,7 @@ namespace WebsitePanel.Setup
|
|||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
internal static bool ApplicationPoolExists(string name)
|
||||
public static bool ApplicationPoolExists(string name)
|
||||
{
|
||||
WmiHelper wmi = new WmiHelper("root\\MicrosoftIISv2");
|
||||
return(wmi.ExecuteQuery(
|
||||
|
@ -780,7 +780,7 @@ namespace WebsitePanel.Setup
|
|||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
internal static bool IIS7ApplicationPoolExists(string name)
|
||||
public static bool IIS7ApplicationPoolExists(string name)
|
||||
{
|
||||
ServerManager serverManager = new ServerManager();
|
||||
bool ret = (serverManager.ApplicationPools[name] != null);
|
||||
|
|
|
@ -7,8 +7,10 @@ using System.Configuration.Install;
|
|||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using System.ServiceProcess;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml;
|
||||
|
@ -163,6 +165,11 @@ namespace WebsitePanel.Setup.Internal
|
|||
Utils.GetStringSetupParameter(Hash, Global.Parameters.DbServerAdminPassword));
|
||||
|
||||
Dst.BaseDirectory = Utils.GetStringSetupParameter(Hash, Global.Parameters.BaseDirectory);
|
||||
Dst.ComponentId = Utils.GetStringSetupParameter(Hash, Global.Parameters.ComponentId);
|
||||
Dst.ComponentExists = string.IsNullOrWhiteSpace(Dst.ComponentId) ? false : true;
|
||||
|
||||
Dst.UpdateVersion = Utils.GetStringSetupParameter(Hash, "Version");
|
||||
Dst.SessionVariables = Src;
|
||||
}
|
||||
public static string GetFullConfigPath(SetupVariables Ctx)
|
||||
{
|
||||
|
@ -196,7 +203,7 @@ namespace WebsitePanel.Setup.Internal
|
|||
var mup = "MODE_UP";
|
||||
var mrup = "MODE_RUP";
|
||||
var Result = ModeExtension.Normal;
|
||||
if (Src.Keys.Contains(mup) && !string.IsNullOrWhiteSpace(Src[mup]))
|
||||
if ((Src.Keys.Contains(mup) && !string.IsNullOrWhiteSpace(Src[mup])) || (Src.Keys.Contains("ComponentId") && !string.IsNullOrWhiteSpace(Src["ComponentId"])))
|
||||
Result = ModeExtension.Restore;
|
||||
else if (Src.Keys.Contains(mrup) && !string.IsNullOrWhiteSpace(Src[mrup]))
|
||||
Result = ModeExtension.Backup;
|
||||
|
@ -404,6 +411,9 @@ namespace WebsitePanel.Setup.Internal
|
|||
case ActionTypes.RestoreConfig:
|
||||
RestoreXmlConfigs(Execute.SetupVariables);
|
||||
break;
|
||||
case ActionTypes.UpdateXml:
|
||||
UpdateXml(Execute.Path, Execute.SetupVariables.XmlData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -2165,39 +2175,54 @@ namespace WebsitePanel.Setup.Internal
|
|||
try
|
||||
{
|
||||
string componentId = Context.ComponentId;
|
||||
string path = Path.Combine(Context.InstallationFolder, Context.ServiceFile);
|
||||
string path = Context.ServiceFile; // FullFileName.
|
||||
string service = Context.ServiceName;
|
||||
|
||||
Log.WriteStart(string.Format("Registering \"{0}\" windows service", service));
|
||||
|
||||
if (!File.Exists(path))
|
||||
{
|
||||
Log.WriteError(string.Format("File {0} not found", path), null);
|
||||
return;
|
||||
}
|
||||
|
||||
Log.WriteStart(string.Format("Registering \"{0}\" windows service", service));
|
||||
string domain = Context.UserDomain;
|
||||
if (string.IsNullOrEmpty(domain))
|
||||
domain = ".";
|
||||
string arguments = string.Format("/i /LogFile=\"\" /user={0}\\{1} /password={2}",
|
||||
domain, Context.UserAccount, Context.UserPassword);
|
||||
int exitCode = Utils.RunProcess(path, arguments);
|
||||
if (exitCode == 0)
|
||||
if (ServiceController.GetServices().Any(s => s.DisplayName.Equals(service, StringComparison.CurrentCultureIgnoreCase)))
|
||||
{
|
||||
var Msg = string.Format("Service \"{0}\" already installed.", service);
|
||||
Log.WriteEnd(Msg);
|
||||
InstallLog.AppendLine(Msg);
|
||||
}
|
||||
try
|
||||
{
|
||||
string domain = Context.UserDomain;
|
||||
if (string.IsNullOrEmpty(domain))
|
||||
domain = ".";
|
||||
|
||||
string arguments = string.Empty;
|
||||
if (Context.UseUserCredentials)
|
||||
arguments = string.Format("/i /LogFile=\"\" /user={0}\\{1} /password={2}", domain, Context.UserAccount, Context.UserPassword);
|
||||
else
|
||||
arguments = "/i /LogFile= ''";
|
||||
|
||||
ManagedInstallerClass.InstallHelper(new[] { arguments, path });
|
||||
//add rollback action
|
||||
RollBack.RegisterWindowsService(path, service);
|
||||
|
||||
var Msg = string.Format("Registered \"{0}\" Windows service ", service);
|
||||
//update log
|
||||
Log.WriteEnd("Registered windows service");
|
||||
Log.WriteEnd(Msg);
|
||||
//update install log
|
||||
InstallLog.AppendLine(string.Format("- Registered \"{0}\" Windows service ", service));
|
||||
InstallLog.AppendLine(Msg);
|
||||
|
||||
// update config setings
|
||||
AppConfig.EnsureComponentConfig(componentId);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "ServiceName", service);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "ServiceFile", path);
|
||||
AppConfig.SaveConfiguration();
|
||||
}
|
||||
else
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(string.Format("Unable to register \"{0}\" Windows service. Error code: {1}", service, exitCode), null);
|
||||
Log.WriteError(string.Format("Unable to register \"{0}\" Windows service.", service), null);
|
||||
InstallLog.AppendLine(string.Format("- Failed to register \"{0}\" windows service ", service));
|
||||
}
|
||||
// update config setings
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "ServiceName", Context.ServiceName);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "ServiceFile", Context.ServiceFile);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -2739,7 +2764,7 @@ namespace WebsitePanel.Setup.Internal
|
|||
BackupDatabase(action.ConnectionString, action.Name);
|
||||
break;
|
||||
case ActionTypes.BackupConfig:
|
||||
BackupConfig(action.Path, destinationDirectory);
|
||||
BackupConfig(action.Path, destinationDirectory, action.SetupVariables != null ? action.SetupVariables.FileNameMap : null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2755,7 +2780,7 @@ namespace WebsitePanel.Setup.Internal
|
|||
}
|
||||
}
|
||||
|
||||
private void BackupConfig(string path, string backupDirectory)
|
||||
private void BackupConfig(string path, string backupDirectory, IDictionary<string, string> NameMap = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -2772,7 +2797,7 @@ namespace WebsitePanel.Setup.Internal
|
|||
string[] files = Directory.GetFiles(path, "*.config", SearchOption.TopDirectoryOnly);
|
||||
foreach (string file in files)
|
||||
{
|
||||
FileUtils.CopyFileToFolder(file, destination);
|
||||
FileUtils.CopyFileToFolder(file, destination, GetMappedFileName(file, NameMap));
|
||||
}
|
||||
Log.WriteEnd("Backed up system configuration");
|
||||
InstallLog.AppendLine("- Backed up system configuration");
|
||||
|
@ -2786,6 +2811,17 @@ namespace WebsitePanel.Setup.Internal
|
|||
}
|
||||
}
|
||||
|
||||
private string GetMappedFileName(string FullFileName, IDictionary<string, string> Map)
|
||||
{
|
||||
if (Map == null)
|
||||
return "";
|
||||
string Key = new FileInfo(FullFileName).Name;
|
||||
if (Map.Keys.Contains(Key))
|
||||
return Map[Key];
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
private void BackupDatabase(string connectionString, string database)
|
||||
{
|
||||
try
|
||||
|
@ -2859,7 +2895,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
{
|
||||
List<InstallAction> list = new List<InstallAction>();
|
||||
InstallAction action = null;
|
||||
|
||||
//database
|
||||
string connectionString = AppConfig.GetComponentSettingStringValue(componentId, "InstallConnectionString");
|
||||
if (!String.IsNullOrEmpty(connectionString))
|
||||
|
@ -2871,7 +2906,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
action.Description = string.Format("Backing up database {0}...", database);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
//directory
|
||||
string path = AppConfig.GetComponentSettingStringValue(componentId, "InstallFolder");
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
|
@ -2881,17 +2915,18 @@ namespace WebsitePanel.Setup.Internal
|
|||
action.Description = string.Format("Backing up directory {0}...", path);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
//config
|
||||
action = new InstallAction(ActionTypes.BackupConfig);
|
||||
action.Description = "Backing up configuration settings...";
|
||||
action.Path = Context.BaseDirectory;
|
||||
action.Description = "Backing up configuration settings...";
|
||||
if (!string.IsNullOrWhiteSpace(Context.SpecialBaseDirectory) )
|
||||
{
|
||||
action.Path = Context.SpecialBaseDirectory;
|
||||
action.SetupVariables = Context;
|
||||
}
|
||||
list.Add(action);
|
||||
|
||||
return list;
|
||||
|
||||
}
|
||||
|
||||
private void UpdateWebSiteBindings()
|
||||
{
|
||||
string component = Context.ComponentFullName;
|
||||
|
@ -3781,9 +3816,9 @@ namespace WebsitePanel.Setup.Internal
|
|||
{
|
||||
//update settings
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "Release", Context.UpdateVersion);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "Installer", Context.Installer);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "InstallerType", Context.InstallerType);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "InstallerPath", Context.InstallerPath);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "Installer", Context.SessionVariables["Installer"]);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "InstallerType", Context.SessionVariables["InstallerType"]);
|
||||
AppConfig.SetComponentSettingStringValue(componentId, "InstallerPath", Context.SessionVariables["InstallerPath"]);
|
||||
}
|
||||
|
||||
Log.WriteInfo("Saving system configuration");
|
||||
|
@ -3928,6 +3963,13 @@ namespace WebsitePanel.Setup.Internal
|
|||
{
|
||||
try
|
||||
{
|
||||
XmlDocumentMerge.KeyAttributes = new List<string> { "name", "id", "key", "pageID", "localName", "xmlns", "privatePath", "moduleDefinitionID", "ref", "verb;path", "controlRenderingCompatibilityVersion;clientIDMode" };
|
||||
XmlDocumentMerge.FrozenAttributes = new List<XmlDocumentMerge.FrozenAttrTag>
|
||||
{
|
||||
new XmlDocumentMerge.FrozenAttrTag() { Path="configuration/microsoft.web.services3/security/securityTokenManager/add", Attributes = new List<string>() {"type"} },
|
||||
new XmlDocumentMerge.FrozenAttrTag(true) { Path="compilation", Attributes = new List<string>() {"targetFramework"} },
|
||||
new XmlDocumentMerge.FrozenAttrTag() { Path="configuration/startup/supportedRuntime", Attributes = new List<string>() {"version", "sku" } }
|
||||
};
|
||||
Log.WriteStart("RestoreXmlConfigs");
|
||||
var Backup = BackupRestore.Find(Ctx.InstallerFolder, Global.DefaultProductName, Ctx.ComponentName);
|
||||
switch(Ctx.ComponentCode)
|
||||
|
@ -3940,21 +3982,13 @@ namespace WebsitePanel.Setup.Internal
|
|||
case Global.EntServer.ComponentCode:
|
||||
{
|
||||
Backup.XmlFiles.Add("Web.config");
|
||||
Backup.XmlFiles.Add(@"bin\WebsitePanel.SchedulerService.exe.config");
|
||||
}
|
||||
break;
|
||||
case Global.WebPortal.ComponentCode:
|
||||
{
|
||||
Backup.XmlFiles.Add("Web.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\Countries.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\CountryStates.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\Ecommerce_Modules.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\Ecommerce_Pages.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\ESModule_ControlsHierarchy.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\ModulesData.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\SiteSettings.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\SupportedLocales.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\SupportedThemes.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\WebsitePanel_Modules.config");
|
||||
Backup.XmlFiles.Add(@"App_Data\WebsitePanel_Pages.config");
|
||||
}
|
||||
break;
|
||||
|
@ -3978,6 +4012,52 @@ namespace WebsitePanel.Setup.Internal
|
|||
throw;
|
||||
}
|
||||
}
|
||||
private void UpdateXml(string FullFileName, IDictionary<string, string[]> Data)
|
||||
{
|
||||
var Msg = "Update xml files.";
|
||||
try
|
||||
{
|
||||
Log.WriteStart(Msg);
|
||||
if (!File.Exists(FullFileName))
|
||||
throw new FileNotFoundException(FullFileName);
|
||||
var Doc = new XmlDocument();
|
||||
Doc.Load(FullFileName);
|
||||
foreach(var Key in Data.Keys)
|
||||
{
|
||||
var Node = Doc.SelectSingleNode(Key) as XmlElement;
|
||||
if (Node == null)
|
||||
{
|
||||
Log.WriteInfo(string.Format("XPath \"{0}\" not found.", Key));
|
||||
}
|
||||
else
|
||||
{
|
||||
var Value = Data[Key];
|
||||
switch (Value.Length)
|
||||
{
|
||||
case 1:
|
||||
Node.Value = Value[0];
|
||||
break;
|
||||
case 2:
|
||||
Node.SetAttribute(Value[0], Value[1]);
|
||||
break;
|
||||
default:
|
||||
Log.WriteError(string.Format("Bad xml value for \"{0}\".", Key));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Doc.Save(FullFileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(ex.ToString());
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Log.WriteEnd(Msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
public class UninstallScript : SetupScript // UninstallPage
|
||||
{
|
||||
|
@ -3989,7 +4069,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
{
|
||||
var list = base.GetActions(componentId);
|
||||
InstallAction action = null;
|
||||
|
||||
//windows service
|
||||
string serviceName = AppConfig.GetComponentSettingStringValue(componentId, "ServiceName");
|
||||
string serviceFile = AppConfig.GetComponentSettingStringValue(componentId, "ServiceFile");
|
||||
|
@ -3997,16 +4076,18 @@ namespace WebsitePanel.Setup.Internal
|
|||
if (!string.IsNullOrEmpty(serviceName) && !string.IsNullOrEmpty(serviceFile))
|
||||
{
|
||||
action = new InstallAction(ActionTypes.UnregisterWindowsService);
|
||||
action.Path = Path.Combine(installFolder, serviceFile);
|
||||
action.Path = serviceFile; // FullFileName.
|
||||
action.Name = serviceName;
|
||||
action.Description = "Removing Windows service...";
|
||||
action.Log = string.Format("- Remove {0} Windows service", serviceName);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
//database
|
||||
bool deleteDatabase = AppConfig.GetComponentSettingBooleanValue(componentId, "NewDatabase");
|
||||
if (deleteDatabase)
|
||||
bool allowDelete = true;
|
||||
if (Context.InstallerType.ToLowerInvariant().Equals("msi")) // DB handled by MSI (WiX) by default.
|
||||
allowDelete = false;
|
||||
if (deleteDatabase && allowDelete)
|
||||
{
|
||||
string connectionString = AppConfig.GetComponentSettingStringValue(componentId, "InstallConnectionString");
|
||||
string database = AppConfig.GetComponentSettingStringValue(componentId, "Database");
|
||||
|
@ -4042,7 +4123,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
action.Log = string.Format("- Delete {0} database login", loginName);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
//virtual directory
|
||||
bool deleteVirtualDirectory = AppConfig.GetComponentSettingBooleanValue(componentId, "NewVirtualDirectory");
|
||||
if (deleteVirtualDirectory)
|
||||
|
@ -4056,7 +4136,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
action.Log = string.Format("- Delete {0} virtual directory...", virtualDirectory);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
//web site
|
||||
bool deleteWebSite = AppConfig.GetComponentSettingBooleanValue(componentId, "NewWebSite");
|
||||
if (deleteWebSite)
|
||||
|
@ -4068,7 +4147,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
action.Log = string.Format("- Delete {0} web site", siteId);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
//application pool
|
||||
bool deleteAppPool = AppConfig.GetComponentSettingBooleanValue(componentId, "NewApplicationPool");
|
||||
if (deleteAppPool)
|
||||
|
@ -4082,7 +4160,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
action.Log = string.Format("- Delete {0} application pool", appPoolName);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
//user account
|
||||
bool deleteUserAccount = AppConfig.GetComponentSettingBooleanValue(componentId, "NewUserAccount");
|
||||
if (deleteUserAccount)
|
||||
|
@ -4100,7 +4177,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
action.Log = string.Format("- Remove {0} user account membership", username);
|
||||
list.Add(action);
|
||||
}
|
||||
|
||||
action = new InstallAction(ActionTypes.DeleteUserAccount);
|
||||
action.Name = username;
|
||||
action.Domain = domain;
|
||||
|
@ -4242,7 +4318,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
else if (ModeExtension == ModeExtension.Restore)
|
||||
{
|
||||
Context.ComponentId = GetComponentID(Context);
|
||||
Context.UpdateVersion = Context.Release;
|
||||
AppConfig.LoadComponentSettings(Context);
|
||||
new RestoreScript(Context).Run();
|
||||
}
|
||||
|
@ -4320,9 +4395,24 @@ namespace WebsitePanel.Setup.Internal
|
|||
else if (ModeExtension == ModeExtension.Restore)
|
||||
{
|
||||
Context.ComponentId = GetComponentID(Context);
|
||||
Context.UpdateVersion = Context.Release;
|
||||
Context.UseUserCredentials = false;
|
||||
AppConfig.LoadComponentSettings(Context);
|
||||
new RestoreScript(Context).Run();
|
||||
if (string.IsNullOrWhiteSpace(Context.ServiceName) || string.IsNullOrWhiteSpace(Context.ServiceFile))
|
||||
{
|
||||
Context.ServiceName = Global.Parameters.SchedulerServiceName;
|
||||
Context.ServiceFile = Path.Combine(Context.InstallationFolder, "bin", Global.Parameters.SchedulerServiceFileName);
|
||||
}
|
||||
SetupScript Script = new RestoreScript(Context);
|
||||
Script.Run();
|
||||
Script = new ExpressScript(Context);
|
||||
var XmlUp = new Dictionary<string, string[]>();
|
||||
XmlUp.Add("configuration/connectionStrings/add[@name='EnterpriseServer']", new string[] {"connectionString", Context.ConnectionString});
|
||||
XmlUp.Add("configuration/appSettings/add[@key='WebsitePanel.CryptoKey']", new string[] {"value", Context.CryptoKey });
|
||||
Context.XmlData = XmlUp;
|
||||
Script.Actions.Add(new InstallAction(ActionTypes.UpdateXml) { SetupVariables = Context, Path = string.Format("{0}.config", Context.ServiceFile) });
|
||||
Script.Actions.Add(new InstallAction(ActionTypes.RegisterWindowsService));
|
||||
Script.Actions.Add(new InstallAction(ActionTypes.StartWindowsService));
|
||||
Script.Run();
|
||||
}
|
||||
else
|
||||
throw new NotImplementedException("Install " + ModeExtension.ToString());
|
||||
|
@ -4398,7 +4488,6 @@ namespace WebsitePanel.Setup.Internal
|
|||
else if (ModeExtension == ModeExtension.Restore)
|
||||
{
|
||||
Context.ComponentId = GetComponentID(Context);
|
||||
Context.UpdateVersion = Context.Release;
|
||||
AppConfig.LoadComponentSettings(Context);
|
||||
new RestoreScript(Context).Run();
|
||||
}
|
||||
|
|
|
@ -8,14 +8,46 @@ namespace WebsitePanel.Setup.Internal
|
|||
{
|
||||
public static class XmlDocumentMerge
|
||||
{
|
||||
public class AttrTag
|
||||
{
|
||||
public AttrTag()
|
||||
: this(null)
|
||||
{
|
||||
|
||||
}
|
||||
public AttrTag(params string[] Attributes)
|
||||
{
|
||||
this.Attributes = Attributes;
|
||||
Priority = Attributes == null ? 0 : (ulong)Attributes.LongLength;
|
||||
}
|
||||
public ulong Priority { get; private set; }
|
||||
public string[] Attributes;
|
||||
}
|
||||
public class FrozenAttrTag
|
||||
{
|
||||
public FrozenAttrTag()
|
||||
: this(false)
|
||||
{
|
||||
|
||||
}
|
||||
public FrozenAttrTag(bool Relative)
|
||||
{
|
||||
IsRelative = Relative;
|
||||
}
|
||||
public string Path { get; set; }
|
||||
public IList<string> Attributes { get; set; }
|
||||
public bool IsRelative { get; private set; }
|
||||
}
|
||||
const string SuccessFormat = "Success: {0}.";
|
||||
const string ErrorFormat = "Error: {0}.";
|
||||
const string MergeCompleted = "XmlDocumentMerge completed";
|
||||
static XmlDocumentMerge()
|
||||
{
|
||||
KeyAttributes = new List<string> { "name", "id", "key" };
|
||||
KeyAttributes = new List<string>();
|
||||
FrozenAttributes = new List<FrozenAttrTag>();
|
||||
}
|
||||
public static List<string> KeyAttributes { get; set; }
|
||||
public static IList<string> KeyAttributes { get; set; }
|
||||
public static IList<FrozenAttrTag> FrozenAttributes { get; set; }
|
||||
public static string Process(string Src, string Dst, string SaveTo = "")
|
||||
{
|
||||
var Result = string.Empty;
|
||||
|
@ -83,57 +115,97 @@ namespace WebsitePanel.Setup.Internal
|
|||
}
|
||||
private static string NodeView(XPathNavigator Navi)
|
||||
{
|
||||
foreach (var Attr in KeyAttributes)
|
||||
foreach (var Item in GetProcessingChain(KeyAttributes))
|
||||
{
|
||||
var Value = Navi.GetAttribute(Attr, string.Empty);
|
||||
if (!string.IsNullOrWhiteSpace(Value))
|
||||
return string.Format("{0}[@{1}='{2}']", Navi.Name, Attr, Value);
|
||||
string Result = string.Empty;
|
||||
foreach (var Attr in Item.Attributes)
|
||||
{
|
||||
var Value = Navi.GetAttribute(Attr, string.Empty);
|
||||
if (string.IsNullOrWhiteSpace(Value))
|
||||
{
|
||||
Result = string.Empty;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Result))
|
||||
Result = string.Format("@{0}='{1}'", Attr, Value);
|
||||
else
|
||||
Result = string.Format("{0} and @{1}='{2}'", Result, Attr, Value);
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(Result))
|
||||
return string.Format("{0}[{1}]", Navi.Name, Result);
|
||||
}
|
||||
return Navi.Name;
|
||||
}
|
||||
private static void Merge(XPathNavigator DstNavi, XmlDocument SrcDoc, string Parent)
|
||||
{
|
||||
if (DstNavi.NodeType == XPathNodeType.Element)
|
||||
var Current = NodePath(Parent, NodeView(DstNavi));
|
||||
if (!string.IsNullOrWhiteSpace(Current))
|
||||
{
|
||||
var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, NodeView(DstNavi)));
|
||||
if (SrcElem != null)
|
||||
if (DstNavi.NodeType == XPathNodeType.Element)
|
||||
{
|
||||
if (DstNavi.MoveToFirstAttribute())
|
||||
var SrcElem = SrcDoc.SelectSingleNode(Current);
|
||||
if (SrcElem != null)
|
||||
{
|
||||
do
|
||||
var Frozen = GetFrozenAttributes(Current, FrozenAttributes);
|
||||
if (DstNavi.MoveToFirstAttribute())
|
||||
{
|
||||
var SrcElemAttr = SrcElem.Attributes[DstNavi.LocalName];
|
||||
if (SrcElemAttr != null)
|
||||
DstNavi.SetValue(SrcElemAttr.Value);
|
||||
do
|
||||
{
|
||||
var SrcElemAttr = SrcElem.Attributes[DstNavi.LocalName];
|
||||
if (SrcElemAttr != null && CanProcess(DstNavi.LocalName, Frozen))
|
||||
DstNavi.SetValue(SrcElemAttr.Value);
|
||||
}
|
||||
while (DstNavi.MoveToNextAttribute());
|
||||
DstNavi.MoveToParent();
|
||||
}
|
||||
while (DstNavi.MoveToNextAttribute());
|
||||
DstNavi.MoveToParent();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (DstNavi.NodeType == XPathNodeType.Text)
|
||||
{
|
||||
var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, NodeView(DstNavi)));
|
||||
if (SrcElem != null)
|
||||
DstNavi.SetValue(SrcElem.InnerText);
|
||||
}
|
||||
var Here = NodeView(DstNavi);
|
||||
if (DstNavi.MoveToFirstChild())
|
||||
{
|
||||
do
|
||||
else if (DstNavi.NodeType == XPathNodeType.Text)
|
||||
{
|
||||
Merge(DstNavi, SrcDoc, NodePath(Parent, Here));
|
||||
var SrcElem = SrcDoc.SelectSingleNode(Current);
|
||||
if (SrcElem != null)
|
||||
DstNavi.SetValue(SrcElem.InnerText);
|
||||
}
|
||||
if (DstNavi.MoveToFirstChild())
|
||||
{
|
||||
do
|
||||
{
|
||||
Merge(DstNavi, SrcDoc, Current);
|
||||
}
|
||||
while (DstNavi.MoveToNext());
|
||||
DstNavi.MoveToParent();
|
||||
}
|
||||
else if (DstNavi.NodeType == XPathNodeType.Element)
|
||||
{
|
||||
var SrcElem = SrcDoc.SelectSingleNode(Current);
|
||||
if (SrcElem != null && !string.IsNullOrWhiteSpace(SrcElem.InnerXml))
|
||||
foreach (XmlNode Child in SrcElem.ChildNodes)
|
||||
DstNavi.AppendChild(Child.CloneNode(true).CreateNavigator());
|
||||
}
|
||||
while (DstNavi.MoveToNext());
|
||||
DstNavi.MoveToParent();
|
||||
}
|
||||
else if (DstNavi.NodeType == XPathNodeType.Element)
|
||||
{
|
||||
var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, Here));
|
||||
if (SrcElem != null && !string.IsNullOrWhiteSpace(SrcElem.InnerXml))
|
||||
foreach (XmlNode Child in SrcElem.ChildNodes)
|
||||
DstNavi.AppendChild(Child.CloneNode(true).CreateNavigator());
|
||||
}
|
||||
}
|
||||
private static IList<AttrTag> GetProcessingChain(IEnumerable<string> Attributes)
|
||||
{
|
||||
var Delimiter = ";";
|
||||
var Chain = new List<AttrTag>();
|
||||
foreach (var Attribute in Attributes)
|
||||
Chain.Add(new AttrTag(Attribute.Split(new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries)));
|
||||
Chain.Sort(delegate(AttrTag a, AttrTag b) { return a.Priority == b.Priority ? 0 : a.Priority > b.Priority ? -1 : 1; });
|
||||
return Chain;
|
||||
}
|
||||
private static FrozenAttrTag GetFrozenAttributes(string Path, IEnumerable<FrozenAttrTag> Frozens)
|
||||
{
|
||||
foreach (var Frozen in Frozens)
|
||||
if (Frozen.IsRelative ? Path.IndexOf(Frozen.Path, 1) == -1 : Path.StartsWith(Frozen.Path))
|
||||
return Frozen;
|
||||
return null;
|
||||
}
|
||||
private static bool CanProcess(string Name, FrozenAttrTag Frozen)
|
||||
{
|
||||
return Frozen == null ? true : !Frozen.Attributes.Contains(Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,6 +43,13 @@ namespace WebsitePanel.WIXInstaller.Common
|
|||
Result |= CheckAspNetRegValue(LMKey);
|
||||
return Result;
|
||||
}
|
||||
public static bool AppPoolExists(string Pool)
|
||||
{
|
||||
if (GetWebServerVersion().Major > MINIMUM_WEBSERVER_MAJOR_VERSION)
|
||||
return WebUtils.IIS7ApplicationPoolExists(Pool);
|
||||
else
|
||||
return WebUtils.ApplicationPoolExists(Pool);
|
||||
}
|
||||
public static bool CheckAspNetRegValue(RegistryKey BaseKey)
|
||||
{
|
||||
var WebComponentsKey = "SOFTWARE\\Microsoft\\InetStp\\Components";
|
||||
|
|
|
@ -52,9 +52,44 @@ namespace WebsitePanel.WIXInstaller
|
|||
{
|
||||
public static List<string> SysDb = new List<string> { "tempdb", "master", "model", "msdb" };
|
||||
public const string CustomDataDelimiter = "-=del=-";
|
||||
public const string SQL_AUTH_WINDOWS = "Windows Authentication";
|
||||
public const string SQL_AUTH_SERVER = "SQL Server Authentication";
|
||||
|
||||
#region CustomActions
|
||||
[CustomAction]
|
||||
public static ActionResult OnServerPrepare(Session Ctx)
|
||||
{
|
||||
PopUpDebugger();
|
||||
|
||||
Ctx.AttachToSetupLog();
|
||||
Log.WriteStart("OnServerPrepare");
|
||||
GetPrepareScript(Ctx).Run();
|
||||
Log.WriteEnd("OnServerPrepare");
|
||||
return ActionResult.Success;
|
||||
}
|
||||
[CustomAction]
|
||||
public static ActionResult OnEServerPrepare(Session Ctx)
|
||||
{
|
||||
PopUpDebugger();
|
||||
|
||||
Ctx.AttachToSetupLog();
|
||||
Log.WriteStart("OnEServerPrepare");
|
||||
GetPrepareScript(Ctx).Run();
|
||||
Log.WriteEnd("OnEServerPrepare");
|
||||
return ActionResult.Success;
|
||||
}
|
||||
[CustomAction]
|
||||
public static ActionResult OnPortalPrepare(Session Ctx)
|
||||
{
|
||||
PopUpDebugger();
|
||||
|
||||
Ctx.AttachToSetupLog();
|
||||
Log.WriteStart("OnPortalPrepare");
|
||||
GetPrepareScript(Ctx).Run();
|
||||
Log.WriteEnd("OnPortalPrepare");
|
||||
return ActionResult.Success;
|
||||
}
|
||||
[CustomAction]
|
||||
public static ActionResult MaintenanceServer(Session session)
|
||||
{
|
||||
var Result = ActionResult.Success;
|
||||
|
@ -84,104 +119,144 @@ namespace WebsitePanel.WIXInstaller
|
|||
[CustomAction]
|
||||
public static ActionResult PreFillSettings(Session session)
|
||||
{
|
||||
PopUpDebugger();
|
||||
var Ctx = session;
|
||||
Ctx.AttachToSetupLog();
|
||||
Log.WriteStart("PreFillSettings");
|
||||
var WSP = Ctx["WEBSITEPANELDIR"];
|
||||
var CfgStr = string.Empty;
|
||||
Func<string, string> GetCfg = (string CfgDir) =>
|
||||
Func<string, bool> HaveInstalledComponents = (string CfgFullPath) =>
|
||||
{
|
||||
if (Directory.Exists(CfgDir))
|
||||
var ComponentsPath = "//components";
|
||||
return File.Exists(CfgFullPath) ? BackupRestore.HaveChild(CfgFullPath, ComponentsPath) : false;
|
||||
};
|
||||
Func<IEnumerable<string>, string> FindMainConfig = (IEnumerable<string> Dirs) =>
|
||||
{
|
||||
// Looking into platform specific Program Files.
|
||||
{
|
||||
var CfgFile = Path.Combine(CfgDir, BackupRestore.MainConfig);
|
||||
if (File.Exists(CfgFile) && BackupRestore.HaveChild(CfgFile, "//components"))
|
||||
return CfgFile;
|
||||
var InstallerMainCfg = "WebsitePanel.Installer.exe.config";
|
||||
var InstallerName = "WebsitePanel Installer";
|
||||
var PFolderType = Environment.Is64BitOperatingSystem ? Environment.SpecialFolder.ProgramFilesX86 : Environment.SpecialFolder.ProgramFiles;
|
||||
var PFiles = Environment.GetFolderPath(PFolderType);
|
||||
var Result = Path.Combine(PFiles, InstallerName, InstallerMainCfg);
|
||||
if (HaveInstalledComponents(Result))
|
||||
return Result;
|
||||
}
|
||||
// Looking into specific directories.
|
||||
foreach (var Dir in Dirs)
|
||||
{
|
||||
var Result = Path.Combine(Dir, BackupRestore.MainConfig);
|
||||
if (HaveInstalledComponents(Result))
|
||||
{
|
||||
return Result;
|
||||
}
|
||||
else
|
||||
{
|
||||
var Names = new string[] { Global.Server.ComponentName, Global.EntServer.ComponentName, Global.WebPortal.ComponentName };
|
||||
foreach (var Name in Names)
|
||||
var ComponentNames = new string[] { Global.Server.ComponentName, Global.EntServer.ComponentName, Global.WebPortal.ComponentName };
|
||||
foreach (var Name in ComponentNames)
|
||||
{
|
||||
var Backup = BackupRestore.Find(CfgDir, Global.DefaultProductName, Name);
|
||||
if (Backup != null && BackupRestore.HaveChild(Backup.BackupMainConfigFile, "//components"))
|
||||
return CfgStr = Backup.BackupMainConfigFile;
|
||||
var Backup = BackupRestore.Find(Dir, Global.DefaultProductName, Name);
|
||||
if (Backup != null && HaveInstalledComponents(Backup.BackupMainConfigFile))
|
||||
return Backup.BackupMainConfigFile;
|
||||
}
|
||||
}
|
||||
}
|
||||
return string.Empty;
|
||||
return null;
|
||||
};
|
||||
Func<Session, string, string, bool> SetProperty = (Session CtxSession, string Prop, string Value) =>
|
||||
{
|
||||
if(!string.IsNullOrWhiteSpace(Value))
|
||||
{
|
||||
CtxSession[Prop] = Value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
CfgStr = GetCfg(WSP);
|
||||
if(string.IsNullOrWhiteSpace(CfgStr))
|
||||
{
|
||||
var Drives = from Drive in DriveInfo.GetDrives() where Drive.DriveType == DriveType.Fixed select Drive;
|
||||
foreach(var Drive in Drives)
|
||||
{
|
||||
var Dir = Path.Combine(Drive.RootDirectory.FullName, Global.DefaultProductName);
|
||||
CfgStr = GetCfg(Dir);
|
||||
if (!string.IsNullOrWhiteSpace(CfgStr))
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(CfgStr))
|
||||
|
||||
var Ctx = session;
|
||||
Ctx.AttachToSetupLog();
|
||||
|
||||
PopUpDebugger();
|
||||
|
||||
Log.WriteStart("PreFillSettings");
|
||||
var WSP = Ctx["WSP_INSTALL_DIR"];
|
||||
var DirList = new List<string>();
|
||||
DirList.Add(WSP);
|
||||
DirList.AddRange(from Drive in DriveInfo.GetDrives()
|
||||
where Drive.DriveType == DriveType.Fixed
|
||||
select Path.Combine(Drive.RootDirectory.FullName, Global.DefaultProductName));
|
||||
var CfgPath = FindMainConfig(DirList);
|
||||
if (!string.IsNullOrWhiteSpace(CfgPath))
|
||||
{
|
||||
var EServerUrl = string.Empty;
|
||||
AppConfig.LoadConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = CfgStr });
|
||||
AppConfig.LoadConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = CfgPath });
|
||||
var CtxVars = new SetupVariables();
|
||||
CtxVars.ComponentId = WiXSetup.GetComponentID(CfgStr, Global.Server.ComponentCode);
|
||||
CtxVars.ComponentId = WiXSetup.GetComponentID(CfgPath, Global.Server.ComponentCode);
|
||||
if (!string.IsNullOrWhiteSpace(CtxVars.ComponentId))
|
||||
{
|
||||
{
|
||||
AppConfig.LoadComponentSettings(CtxVars);
|
||||
Ctx["COMPFOUND_SERVER"] = "1";
|
||||
|
||||
SetProperty(Ctx, "COMPFOUND_SERVER_ID", CtxVars.ComponentId);
|
||||
SetProperty(Ctx, "COMPFOUND_SERVER_MAIN_CFG", CfgPath);
|
||||
|
||||
SetProperty(Ctx, "PI_SERVER_IP", CtxVars.WebSiteIP);
|
||||
SetProperty(Ctx, "PI_SERVER_PORT", CtxVars.WebSitePort);
|
||||
SetProperty(Ctx, "PI_SERVER_HOST", CtxVars.WebSiteDomain);
|
||||
SetProperty(Ctx, "PI_SERVER_LOGIN", CtxVars.UserAccount);
|
||||
SetProperty(Ctx, "PI_SERVER_PASSWORD", CtxVars.UserPassword);
|
||||
SetProperty(Ctx, "PI_SERVER_PASSWORD_CONFIRM",CtxVars.UserPassword);
|
||||
SetProperty(Ctx, "PI_SERVER_DOMAIN", CtxVars.UserDomain);
|
||||
SetProperty(Ctx, "SERVER_ACCESS_PASSWORD", CtxVars.ServerPassword);
|
||||
SetProperty(Ctx, "SERVER_ACCESS_PASSWORD_CONFIRM", CtxVars.ServerPassword);
|
||||
|
||||
SetProperty(Ctx, "PI_SERVER_INSTALL_DIR", CtxVars.InstallFolder);
|
||||
SetProperty(Ctx, "WSP_INSTALL_DIR", Directory.GetParent(CtxVars.InstallFolder).FullName);
|
||||
|
||||
var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
|
||||
bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
|
||||
|
||||
Ctx["COMPFOUND_SERVER"] = (HaveAccount && HavePool) ? YesNo.Yes : YesNo.No;
|
||||
}
|
||||
CtxVars.ComponentId = WiXSetup.GetComponentID(CfgStr, Global.EntServer.ComponentCode);
|
||||
CtxVars.ComponentId = WiXSetup.GetComponentID(CfgPath, Global.EntServer.ComponentCode);
|
||||
if (!string.IsNullOrWhiteSpace(CtxVars.ComponentId))
|
||||
{
|
||||
AppConfig.LoadComponentSettings(CtxVars);
|
||||
Ctx["COMPFOUND_ESERVER"] = "1";
|
||||
|
||||
SetProperty(Ctx, "COMPFOUND_ESERVER_ID", CtxVars.ComponentId);
|
||||
SetProperty(Ctx, "COMPFOUND_ESERVER_MAIN_CFG", CfgPath);
|
||||
|
||||
SetProperty(Ctx, "PI_ESERVER_IP", CtxVars.WebSiteIP);
|
||||
SetProperty(Ctx, "PI_ESERVER_PORT", CtxVars.WebSitePort);
|
||||
SetProperty(Ctx, "PI_ESERVER_HOST", CtxVars.WebSiteDomain);
|
||||
SetProperty(Ctx, "PI_ESERVER_LOGIN", CtxVars.UserAccount);
|
||||
SetProperty(Ctx, "PI_ESERVER_PASSWORD", CtxVars.UserPassword);
|
||||
SetProperty(Ctx, "PI_ESERVER_PASSWORD_CONFIRM", CtxVars.UserPassword);
|
||||
SetProperty(Ctx, "PI_ESERVER_DOMAIN", CtxVars.UserDomain);
|
||||
SetProperty(Ctx, "SERVERADMIN_PASSWORD", CtxVars.ServerAdminPassword);
|
||||
SetProperty(Ctx, "SERVERADMIN_PASSWORD_CONFIRM", CtxVars.ServerAdminPassword);
|
||||
EServerUrl = string.Format("http://{0}:{1}", CtxVars.WebSiteIP, CtxVars.WebSitePort);
|
||||
|
||||
SetProperty(Ctx, "PI_ESERVER_INSTALL_DIR", CtxVars.InstallFolder);
|
||||
SetProperty(Ctx, "WSP_INSTALL_DIR", Directory.GetParent(CtxVars.InstallFolder).FullName);
|
||||
|
||||
var ConnStr = new SqlConnectionStringBuilder(CtxVars.DbInstallConnectionString);
|
||||
SetProperty(Ctx, "DB_CONN", ConnStr.ToString());
|
||||
SetProperty(Ctx, "DB_SERVER", ConnStr.DataSource);
|
||||
SetProperty(Ctx, "DB_AUTH", ConnStr.IntegratedSecurity ? SQL_AUTH_WINDOWS : SQL_AUTH_SERVER);
|
||||
if (!ConnStr.IntegratedSecurity)
|
||||
{
|
||||
SetProperty(Ctx, "DB_LOGIN", ConnStr.UserID);
|
||||
SetProperty(Ctx, "DB_PASSWORD", ConnStr.Password);
|
||||
}
|
||||
ConnStr = new SqlConnectionStringBuilder(CtxVars.ConnectionString);
|
||||
SetProperty(Ctx, "DB_DATABASE", ConnStr.InitialCatalog);
|
||||
|
||||
var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
|
||||
bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
|
||||
|
||||
Ctx["COMPFOUND_ESERVER"] = (HaveAccount && HavePool) ? YesNo.Yes : YesNo.No;
|
||||
}
|
||||
CtxVars.ComponentId = WiXSetup.GetComponentID(CfgStr, Global.WebPortal.ComponentCode);
|
||||
CtxVars.ComponentId = WiXSetup.GetComponentID(CfgPath, Global.WebPortal.ComponentCode);
|
||||
if (!string.IsNullOrWhiteSpace(CtxVars.ComponentId))
|
||||
{
|
||||
AppConfig.LoadComponentSettings(CtxVars);
|
||||
Ctx["COMPFOUND_PORTAL"] = "1";
|
||||
|
||||
SetProperty(Ctx, "COMPFOUND_PORTAL_ID", CtxVars.ComponentId);
|
||||
SetProperty(Ctx, "COMPFOUND_PORTAL_MAIN_CFG", CfgPath);
|
||||
|
||||
SetProperty(Ctx, "PI_PORTAL_IP", CtxVars.WebSiteIP);
|
||||
SetProperty(Ctx, "PI_PORTAL_PORT", CtxVars.WebSitePort);
|
||||
SetProperty(Ctx, "PI_PORTAL_HOST", CtxVars.WebSiteDomain);
|
||||
SetProperty(Ctx, "PI_PORTAL_LOGIN", CtxVars.UserAccount);
|
||||
SetProperty(Ctx, "PI_PORTAL_PASSWORD", CtxVars.UserPassword);
|
||||
SetProperty(Ctx, "PI_PORTAL_PASSWORD_CONFIRM", CtxVars.UserPassword);
|
||||
SetProperty(Ctx, "PI_PORTAL_DOMAIN", CtxVars.UserDomain);
|
||||
if (!SetProperty(Ctx, "PI_ESERVER_URL", CtxVars.EnterpriseServerURL))
|
||||
if (!SetProperty(Ctx, "PI_ESERVER_URL", EServerUrl))
|
||||
SetProperty(Ctx, "PI_ESERVER_URL", Global.WebPortal.DefaultEntServURL);
|
||||
|
||||
SetProperty(Ctx, "PI_PORTAL_INSTALL_DIR", CtxVars.InstallFolder);
|
||||
SetProperty(Ctx, "WSP_INSTALL_DIR", Directory.GetParent(CtxVars.InstallFolder).FullName);
|
||||
|
||||
var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
|
||||
bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
|
||||
|
||||
Ctx["COMPFOUND_PORTAL"] = (HaveAccount && HavePool) ? YesNo.Yes : YesNo.No;
|
||||
}
|
||||
}
|
||||
TryApllyNewPassword(Ctx, "PI_SERVER_PASSWORD");
|
||||
|
@ -202,8 +277,8 @@ namespace WebsitePanel.WIXInstaller
|
|||
try
|
||||
{
|
||||
Log.WriteStart("InstallWebFeatures");
|
||||
if(Tool.GetIsWebRoleInstalled())
|
||||
{
|
||||
if (Tool.GetIsWebRoleInstalled())
|
||||
{
|
||||
if (!Tool.GetIsWebFeaturesInstalled())
|
||||
{
|
||||
Log.WriteInfo("InstallWebFeatures: ASP.NET.");
|
||||
|
@ -221,12 +296,12 @@ namespace WebsitePanel.WIXInstaller
|
|||
}
|
||||
Log.WriteInfo("InstallWebFeatures: done.");
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(string.Format("InstallWebFeatures: fail - {0}.", ex.ToString()));
|
||||
Result = ActionResult.Failure;
|
||||
}
|
||||
if(!string.IsNullOrWhiteSpace(Msg))
|
||||
if (!string.IsNullOrWhiteSpace(Msg))
|
||||
Log.WriteInfo(string.Format("InstallWebFeatures Tool Log: {0}.", Msg));
|
||||
Log.WriteEnd("InstallWebFeatures");
|
||||
return Result;
|
||||
|
@ -418,7 +493,7 @@ namespace WebsitePanel.WIXInstaller
|
|||
foreach (var Db in GetDbList(ConnStr: session["DB_CONN"], ForbiddenNames: SysDb))
|
||||
{
|
||||
Ctrl.AddItem(Db);
|
||||
session["DB_SELECT"] = Db; // Adds available DBs to installer log.
|
||||
session["DB_SELECT"] = Db; // Adds available DBs to installer log and selects latest.
|
||||
}
|
||||
else
|
||||
session["DB_SELECT"] = "";
|
||||
|
@ -427,88 +502,15 @@ namespace WebsitePanel.WIXInstaller
|
|||
[CustomAction]
|
||||
public static ActionResult CheckConnectionUI(Session session)
|
||||
{
|
||||
string ConnStr = session["DB_AUTH"].Equals("Windows Authentication") ? GetConnectionString(session["DB_SERVER"], "master") :
|
||||
string ConnStr = session["DB_AUTH"].Equals(SQL_AUTH_WINDOWS) ? GetConnectionString(session["DB_SERVER"], "master") :
|
||||
GetConnectionString(session["DB_SERVER"], "master", session["DB_LOGIN"], session["DB_PASSWORD"]);
|
||||
string msg;
|
||||
bool Result = CheckConnection(ConnStr, out msg);
|
||||
session["DB_CONN_CORRECT"] = Result ? "1" : "0";
|
||||
session["DB_CONN_CORRECT"] = Result ? YesNo.Yes : YesNo.No;
|
||||
session["DB_CONN"] = Result ? ConnStr : "";
|
||||
session["DB_CONN_MSG"] = msg;
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult FinalizeInstall(Session session)
|
||||
{
|
||||
/*var connectionString = GetCustomActionProperty(session, "ConnectionString").Replace(CustomDataDelimiter, ";");
|
||||
var serviceFolder = GetCustomActionProperty(session, "ServiceFolder");
|
||||
var previousConnectionString = GetCustomActionProperty(session, "PreviousConnectionString").Replace(CustomDataDelimiter, ";");
|
||||
var previousCryptoKey = GetCustomActionProperty(session, "PreviousCryptoKey");
|
||||
|
||||
if (string.IsNullOrEmpty(serviceFolder))
|
||||
{
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
connectionString = string.IsNullOrEmpty(previousConnectionString)
|
||||
? connectionString
|
||||
: previousConnectionString;
|
||||
|
||||
ChangeConfigString("/configuration/connectionStrings/add[@name='EnterpriseServer']", "connectionString", connectionString, serviceFolder);
|
||||
ChangeConfigString("/configuration/appSettings/add[@key='WebsitePanel.CryptoKey']", "value", previousCryptoKey, serviceFolder);
|
||||
InstallService(serviceFolder);*/
|
||||
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult FinalizeUnInstall(Session session)
|
||||
{
|
||||
// UnInstallService();
|
||||
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult PreInstallationAction(Session session)
|
||||
{
|
||||
session["SKIPCONNECTIONSTRINGSTEP"] = "0";
|
||||
|
||||
session["SERVICEFOLDER"] = session["INSTALLFOLDER"];
|
||||
|
||||
var servicePath = /*SecurityUtils.GetServicePath("WebsitePanel Scheduler")*/"";
|
||||
|
||||
if (!string.IsNullOrEmpty(servicePath))
|
||||
{
|
||||
string path = Path.Combine(servicePath, "WebsitePanel.SchedulerService.exe.config");
|
||||
|
||||
if (File.Exists(path))
|
||||
{
|
||||
using (var reader = new StreamReader(path))
|
||||
{
|
||||
string content = reader.ReadToEnd();
|
||||
var pattern = new Regex(@"(?<=<add key=""WebsitePanel.CryptoKey"" .*?value\s*=\s*"")[^""]+(?="".*?>)");
|
||||
Match match = pattern.Match(content);
|
||||
session["PREVIOUSCRYPTOKEY"] = match.Value;
|
||||
|
||||
var connectionStringPattern = new Regex(@"(?<=<add name=""EnterpriseServer"" .*?connectionString\s*=\s*"")[^""]+(?="".*?>)");
|
||||
match = connectionStringPattern.Match(content);
|
||||
session["PREVIOUSCONNECTIONSTRING"] = match.Value.Replace(";", CustomDataDelimiter);
|
||||
}
|
||||
|
||||
session["SKIPCONNECTIONSTRINGSTEP"] = "1";
|
||||
|
||||
if (string.IsNullOrEmpty(session["SERVICEFOLDER"]))
|
||||
{
|
||||
session["SERVICEFOLDER"] = servicePath;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult PrereqCheck(Session session)
|
||||
{
|
||||
|
@ -556,102 +558,14 @@ namespace WebsitePanel.WIXInstaller
|
|||
}
|
||||
|
||||
#endregion
|
||||
private static void InstallService(string installFolder)
|
||||
{
|
||||
try
|
||||
{
|
||||
var schedulerService =
|
||||
ServiceController.GetServices().FirstOrDefault(
|
||||
s => s.DisplayName.Equals("WebsitePanel Scheduler", StringComparison.CurrentCultureIgnoreCase));
|
||||
|
||||
if (schedulerService != null)
|
||||
{
|
||||
StopService(schedulerService.ServiceName);
|
||||
|
||||
SecurityUtils.DeleteService(schedulerService.ServiceName);
|
||||
}
|
||||
|
||||
ManagedInstallerClass.InstallHelper(new[] { "/i", Path.Combine(installFolder, "WebsitePanel.SchedulerService.exe") });
|
||||
|
||||
StartService("WebsitePanel Scheduler");
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private static void UnInstallService()
|
||||
{
|
||||
try
|
||||
{
|
||||
var schedulerService =
|
||||
ServiceController.GetServices().FirstOrDefault(
|
||||
s => s.DisplayName.Equals("WebsitePanel Scheduler", StringComparison.CurrentCultureIgnoreCase));
|
||||
|
||||
if (schedulerService != null)
|
||||
{
|
||||
StopService(schedulerService.ServiceName);
|
||||
|
||||
SecurityUtils.DeleteService(schedulerService.ServiceName);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private static void ChangeConfigString(string nodePath, string attrToChange, string value, string installFolder)
|
||||
{
|
||||
string path = Path.Combine(installFolder, "WebsitePanel.SchedulerService.exe.config");
|
||||
|
||||
if (!File.Exists(path))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
XmlDocument xmldoc = new XmlDocument();
|
||||
xmldoc.Load(path);
|
||||
|
||||
XmlElement node = xmldoc.SelectSingleNode(nodePath) as XmlElement;
|
||||
|
||||
if (node != null)
|
||||
{
|
||||
node.SetAttribute(attrToChange, value);
|
||||
|
||||
xmldoc.Save(path);
|
||||
}
|
||||
}
|
||||
|
||||
private static void StopService(string serviceName)
|
||||
{
|
||||
var sc = new ServiceController(serviceName);
|
||||
|
||||
if (sc.Status == ServiceControllerStatus.Running)
|
||||
{
|
||||
sc.Stop();
|
||||
sc.WaitForStatus(ServiceControllerStatus.Stopped);
|
||||
}
|
||||
}
|
||||
|
||||
private static void StartService(string serviceName)
|
||||
{
|
||||
var sc = new ServiceController(serviceName);
|
||||
|
||||
if (sc.Status == ServiceControllerStatus.Stopped)
|
||||
{
|
||||
sc.Start();
|
||||
sc.WaitForStatus(ServiceControllerStatus.Running);
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetConnectionString(string serverName, string databaseName)
|
||||
{
|
||||
return string.Format("Server={0};database={1};Trusted_Connection=true;", serverName, databaseName)/*.Replace(";", CustomDataDelimiter)*/;
|
||||
return string.Format("Server={0};database={1};Trusted_Connection=true;", serverName, databaseName);
|
||||
}
|
||||
|
||||
private static string GetConnectionString(string serverName, string databaseName, string login, string password)
|
||||
{
|
||||
return string.Format("Server={0};database={1};uid={2};password={3};", serverName, databaseName, login, password)/*.Replace(";", CustomDataDelimiter)*/;
|
||||
return string.Format("Server={0};database={1};uid={2};password={3};", serverName, databaseName, login, password);
|
||||
}
|
||||
static bool CheckConnection(string ConnStr, out string Info)
|
||||
{
|
||||
|
@ -671,16 +585,6 @@ namespace WebsitePanel.WIXInstaller
|
|||
}
|
||||
return Result;
|
||||
}
|
||||
|
||||
private static string GetCustomActionProperty(Session session, string key)
|
||||
{
|
||||
if (session.CustomActionData.ContainsKey(key))
|
||||
{
|
||||
return session.CustomActionData[key].Replace("-=-", ";");
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
private static void AddCheck(ListViewCtrl view, Session session, string PropertyID)
|
||||
{
|
||||
view.AddItem(session[PropertyID] == YesNo.Yes, session[PropertyID + "_TITLE"]);
|
||||
|
@ -834,15 +738,6 @@ namespace WebsitePanel.WIXInstaller
|
|||
foreach (var Msg in Msgs)
|
||||
AddTo(Ctx, "CUSTOM_INSTALL_TEXT", Msg); ;
|
||||
}
|
||||
|
||||
internal static string GetProperty(Session Ctx, string Property)
|
||||
{
|
||||
if (Ctx.CustomActionData.ContainsKey(Property))
|
||||
return Ctx[Property];
|
||||
else
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
private static ActionResult ProcessInstall(Session Ctx, WiXInstallType InstallType)
|
||||
{
|
||||
IWiXSetup Install = null;
|
||||
|
@ -911,6 +806,39 @@ namespace WebsitePanel.WIXInstaller
|
|||
Log.WriteInfo("New password was applied to " + Id);
|
||||
}
|
||||
}
|
||||
private static string GetProperty(Session Ctx, string Property)
|
||||
{
|
||||
if (Ctx.CustomActionData.ContainsKey(Property))
|
||||
return Ctx.CustomActionData[Property];
|
||||
else
|
||||
return string.Empty;
|
||||
}
|
||||
private static bool SetProperty(Session CtxSession, string Prop, string Value)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(Value))
|
||||
{
|
||||
CtxSession[Prop] = Value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
private static SetupScript GetPrepareScript(Session Ctx)
|
||||
{
|
||||
var CtxVars = new SetupVariables();
|
||||
WiXSetup.FillFromSession(Ctx.CustomActionData, CtxVars);
|
||||
AppConfig.LoadConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = GetProperty(Ctx, "MainConfig") });
|
||||
CtxVars.IISVersion = Tool.GetWebServerVersion();
|
||||
CtxVars.ComponentId = GetProperty(Ctx, "ComponentId");
|
||||
CtxVars.Version = AppConfig.GetComponentSettingStringValue(CtxVars.ComponentId, Global.Parameters.Release);
|
||||
CtxVars.SpecialBaseDirectory = Directory.GetParent(GetProperty(Ctx, "MainConfig")).FullName;
|
||||
CtxVars.FileNameMap = new Dictionary<string, string>();
|
||||
CtxVars.FileNameMap.Add(new FileInfo(GetProperty(Ctx, "MainConfig")).Name, BackupRestore.MainConfig);
|
||||
SetupScript Result = new ExpressScript(CtxVars);
|
||||
Result.Actions.Add(new InstallAction(ActionTypes.StopApplicationPool) { SetupVariables = CtxVars });
|
||||
Result.Actions.Add(new InstallAction(ActionTypes.Backup) { SetupVariables = CtxVars });
|
||||
Result.Actions.Add(new InstallAction(ActionTypes.DeleteDirectory) { SetupVariables = CtxVars, Path = CtxVars.InstallFolder });
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
public static class SessionExtension
|
||||
{
|
||||
|
|
|
@ -44364,7 +44364,7 @@ Hello #user.FirstName#,
|
|||
</p>
|
||||
|
||||
<p>
|
||||
Please, find below details of your control panel account.
|
||||
Please, find below details of your control panel account. The one time password was generated for you. You should change the password after login.
|
||||
</p>
|
||||
|
||||
<h1>Control Panel URL</h1>
|
||||
|
@ -44373,7 +44373,7 @@ Please, find below details of your control panel account.
|
|||
<tr>
|
||||
<th>Control Panel URL</th>
|
||||
<th>Username</th>
|
||||
<th>Password</th>
|
||||
<th>One Time Password</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -44411,11 +44411,11 @@ INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [Property
|
|||
|
||||
Hello #user.FirstName#,
|
||||
|
||||
Please, find below details of your control panel account.
|
||||
Please, find below details of your control panel account. The one time password was generated for you. You should change the password after login.
|
||||
|
||||
Control Panel URL: http://panel.AcmeHosting.com
|
||||
Username: #user.Username#
|
||||
Password: #user.Password#
|
||||
One Time Password: #user.Password#
|
||||
|
||||
If you have any questions regarding your hosting account, feel free to contact our support department at any time.
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1945,10 +1945,9 @@ namespace WebsitePanel.EnterpriseServer
|
|||
SendUserPasswordEmail(owner, user, reason, mailTo, logoUrl, UserSettings.USER_PASSWORD_REQUEST_LETTER, "USER_PASSWORD_REQUEST_LETTER", finalStep);
|
||||
}
|
||||
|
||||
public static void SendUserExpirationPasswordEmail(UserInfo owner, OrganizationUser user, string reason,
|
||||
string mailTo, string logoUrl)
|
||||
public static void SendUserExpirationPasswordEmail(UserInfo owner, OrganizationUser user, string reason, string mailTo, string logoUrl)
|
||||
{
|
||||
SendUserPasswordEmail(owner, user, reason, user.PrimaryEmailAddress, logoUrl, UserSettings.USER_PASSWORD_EXPIRATION_LETTER, "USER_PASSWORD_EXPIRATION_LETTER", false);
|
||||
SendUserPasswordEmail(owner, user, reason, user.PrimaryEmailAddress, logoUrl, UserSettings.USER_PASSWORD_EXPIRATION_LETTER, "USER_PASSWORD_EXPIRATION_LETTER", true);
|
||||
}
|
||||
|
||||
public static void SendUserPasswordEmail(UserInfo owner, OrganizationUser user, string reason, string mailTo, string logoUrl, string settingsName, string taskName, bool finalStep)
|
||||
|
|
|
@ -4368,6 +4368,12 @@
|
|||
<data name="ServiceItemType.VirtualSwitch" xml:space="preserve">
|
||||
<value>Virtual Switch</value>
|
||||
</data>
|
||||
<data name="ServiceItemType.SharePointFoundationSiteCollection" xml:space="preserve">
|
||||
<value>SharePoint Foundation Site Collection</value>
|
||||
</data>
|
||||
<data name="ServiceItemType.SharePointEnterpriseSiteCollection" xml:space="preserve">
|
||||
<value>SharePoint Enterprise Site Collection</value>
|
||||
</data>
|
||||
<data name="TaskActivity.VPS_ADD_EXTERNAL_IP" xml:space="preserve">
|
||||
<value>Assigning external IP addresses</value>
|
||||
</data>
|
||||
|
|
|
@ -366,10 +366,10 @@
|
|||
<Target Name="WiXCreateRedistFileListBuild" DependsOnTargets="CreateFixDefaultPublicFolderMailboxBuild" >
|
||||
<RemoveDir Directories="$(WiXInstallerBuild)\ComponentsFiles" />
|
||||
<MakeDir Directories="$(WiXInstallerBuild)\ComponentsFiles" />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(EnterpriseServerBuild) -o $(WiXInstallerBuild)\ComponentsFiles\EnterpriseServerFiles.wxs -gg -sreg -srd -var wix.BUILDESPATH -cg EnterpriseServerFiles -dr INSTALLENTERPRISESERVERFOLDER' />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(ServerBuild) -o $(WiXInstallerBuild)\ComponentsFiles\ServerFiles.wxs -gg -sreg -srd -var wix.BUILDSPATH -cg ServerFiles -dr INSTALLSERVERFOLDER' />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(PortalBuild) -o $(WiXInstallerBuild)\ComponentsFiles\PortalFiles.wxs -gg -sreg -srd -var wix.BUILDPPATH -cg PortalFiles -dr INSTALLPORTALFOLDER' />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(WebDavPortalBuild) -o $(WiXInstallerBuild)\ComponentsFiles\WebDavPortalFiles.wxs -gg -sreg -srd -var wix.BUILDWDPPATH -cg WebDavPortalFiles -dr INSTALLWEBDAVPORTALFOLDER' />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(EnterpriseServerBuild) -o $(WiXInstallerBuild)\ComponentsFiles\EnterpriseServerFiles.wxs -gg -sreg -srd -var wix.BUILDESPATH -cg EnterpriseServerFiles -dr PI_ESERVER_INSTALL_DIR' />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(ServerBuild) -o $(WiXInstallerBuild)\ComponentsFiles\ServerFiles.wxs -gg -sreg -srd -var wix.BUILDSPATH -cg ServerFiles -dr PI_SERVER_INSTALL_DIR' />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(PortalBuild) -o $(WiXInstallerBuild)\ComponentsFiles\PortalFiles.wxs -gg -sreg -srd -var wix.BUILDPPATH -cg PortalFiles -dr PI_PORTAL_INSTALL_DIR' />
|
||||
<Exec Command='"$(WIX)bin\heat.exe" dir $(WebDavPortalBuild) -o $(WiXInstallerBuild)\ComponentsFiles\WebDavPortalFiles.wxs -gg -sreg -srd -var wix.BUILDWDPPATH -cg WebDavPortalFiles -dr PI_WDPORTAL_INSTALL_DIR' />
|
||||
</Target>
|
||||
|
||||
<Target Name="Build" DependsOnTargets="WiXCreateRedistFileListBuild">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue