Merge
This commit is contained in:
commit
a08adf9b91
54 changed files with 2971 additions and 1065 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 />
|
||||
<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"
|
||||
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"
|
||||
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: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"
|
||||
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"/>
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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));
|
||||
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.Format("/i /LogFile=\"\" /user={0}\\{1} /password={2}",
|
||||
domain, Context.UserAccount, Context.UserPassword);
|
||||
int exitCode = Utils.RunProcess(path, arguments);
|
||||
if (exitCode == 0)
|
||||
{
|
||||
|
||||
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;
|
||||
list.Add(action);
|
||||
|
||||
return list;
|
||||
|
||||
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,27 +115,47 @@ namespace WebsitePanel.Setup.Internal
|
|||
}
|
||||
private static string NodeView(XPathNavigator Navi)
|
||||
{
|
||||
foreach (var Attr in KeyAttributes)
|
||||
foreach (var Item in GetProcessingChain(KeyAttributes))
|
||||
{
|
||||
string Result = string.Empty;
|
||||
foreach (var Attr in Item.Attributes)
|
||||
{
|
||||
var Value = Navi.GetAttribute(Attr, string.Empty);
|
||||
if (!string.IsNullOrWhiteSpace(Value))
|
||||
return string.Format("{0}[@{1}='{2}']", Navi.Name, Attr, Value);
|
||||
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)
|
||||
{
|
||||
var Current = NodePath(Parent, NodeView(DstNavi));
|
||||
if (!string.IsNullOrWhiteSpace(Current))
|
||||
{
|
||||
if (DstNavi.NodeType == XPathNodeType.Element)
|
||||
{
|
||||
var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, NodeView(DstNavi)));
|
||||
var SrcElem = SrcDoc.SelectSingleNode(Current);
|
||||
if (SrcElem != null)
|
||||
{
|
||||
var Frozen = GetFrozenAttributes(Current, FrozenAttributes);
|
||||
if (DstNavi.MoveToFirstAttribute())
|
||||
{
|
||||
do
|
||||
{
|
||||
var SrcElemAttr = SrcElem.Attributes[DstNavi.LocalName];
|
||||
if (SrcElemAttr != null)
|
||||
if (SrcElemAttr != null && CanProcess(DstNavi.LocalName, Frozen))
|
||||
DstNavi.SetValue(SrcElemAttr.Value);
|
||||
}
|
||||
while (DstNavi.MoveToNextAttribute());
|
||||
|
@ -113,27 +165,47 @@ namespace WebsitePanel.Setup.Internal
|
|||
}
|
||||
else if (DstNavi.NodeType == XPathNodeType.Text)
|
||||
{
|
||||
var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, NodeView(DstNavi)));
|
||||
var SrcElem = SrcDoc.SelectSingleNode(Current);
|
||||
if (SrcElem != null)
|
||||
DstNavi.SetValue(SrcElem.InnerText);
|
||||
}
|
||||
var Here = NodeView(DstNavi);
|
||||
if (DstNavi.MoveToFirstChild())
|
||||
{
|
||||
do
|
||||
{
|
||||
Merge(DstNavi, SrcDoc, NodePath(Parent, Here));
|
||||
Merge(DstNavi, SrcDoc, Current);
|
||||
}
|
||||
while (DstNavi.MoveToNext());
|
||||
DstNavi.MoveToParent();
|
||||
}
|
||||
else if (DstNavi.NodeType == XPathNodeType.Element)
|
||||
{
|
||||
var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, Here));
|
||||
var SrcElem = SrcDoc.SelectSingleNode(Current);
|
||||
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,147 @@ 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) =>
|
||||
{
|
||||
var CfgFile = Path.Combine(CfgDir, BackupRestore.MainConfig);
|
||||
if (File.Exists(CfgFile) && BackupRestore.HaveChild(CfgFile, "//components"))
|
||||
return CfgFile;
|
||||
// Looking into directories with next priority:
|
||||
// Previous installation directory and her backup, "WebsitePanel" directories on fixed drives and their backups.
|
||||
// The last chance is an update from an installation based on previous installer version that installed to "Program Files".
|
||||
// Regular 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;
|
||||
// Looking into platform specific Program Files.
|
||||
{
|
||||
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;
|
||||
}
|
||||
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);
|
||||
}
|
||||
CtxVars.ComponentId = WiXSetup.GetComponentID(CfgStr, Global.WebPortal.ComponentCode);
|
||||
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(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,7 +280,7 @@ namespace WebsitePanel.WIXInstaller
|
|||
try
|
||||
{
|
||||
Log.WriteStart("InstallWebFeatures");
|
||||
if(Tool.GetIsWebRoleInstalled())
|
||||
if (Tool.GetIsWebRoleInstalled())
|
||||
{
|
||||
if (!Tool.GetIsWebFeaturesInstalled())
|
||||
{
|
||||
|
@ -221,12 +299,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 +496,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 +505,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 +561,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 +588,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 +741,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 +809,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
|
||||
{
|
||||
|
|
|
@ -91,7 +91,7 @@ namespace WebsitePanel.VmConfig
|
|||
}
|
||||
|
||||
attempts++;
|
||||
Log.WriteError(string.Format("Attempt #{0} to find network adapter failed!", attempts));
|
||||
Log.WriteError(string.Format("Attempt #{0} to find network adapter (mac: {1}) failed!", attempts, macAddress));
|
||||
// wait 1 min
|
||||
System.Threading.Thread.Sleep(60000);
|
||||
//repeat loop
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<appSettings>
|
||||
|
||||
<!-- Start-up delay in milliseconds - time to wait before tasks execution -->
|
||||
<add key="Service.StartupDelay" value="0"/>
|
||||
<add key="Service.StartupDelay" value="20000"/>
|
||||
|
||||
<!-- Interval in milliseconds to poll registry keys. 1 - read registry only once -->
|
||||
<add key="Service.RegistryPollInterval" value="30000"/>
|
||||
|
|
|
@ -12216,7 +12216,7 @@ SET @columnFullName = 'FullName'
|
|||
DECLARE @curUsers cursor
|
||||
DECLARE @curSpace cursor
|
||||
|
||||
DECLARE @sqlSpace nvarchar(2000)
|
||||
DECLARE @sqlSpace nvarchar(3000)
|
||||
DECLARE @sqlUsers nvarchar(2000)
|
||||
DECLARE @sqlReturn nvarchar(4000)
|
||||
|
||||
|
@ -12232,12 +12232,8 @@ DECLARE @Users TABLE
|
|||
UserID int
|
||||
)
|
||||
INSERT INTO @Users (UserID)
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlUsers = @sqlUsers + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlUsers = @sqlUsers + 'U.UserID
|
||||
SELECT
|
||||
U.UserID
|
||||
FROM UsersDetailed AS U
|
||||
WHERE
|
||||
U.UserID <> @UserID AND U.IsPeer = 0 AND
|
||||
|
@ -12249,8 +12245,12 @@ WHERE
|
|||
AND ((@RoleID = 0) OR (@RoleID > 0 AND U.RoleID = @RoleID))
|
||||
AND @HasUserRights = 1
|
||||
SET @curValue = cursor local for
|
||||
SELECT
|
||||
U.ItemID,
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlUsers = @sqlUsers + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlUsers = @sqlUsers + 'U.ItemID,
|
||||
U.TextSearch,
|
||||
U.ColumnType,
|
||||
''Users'' as FullType,
|
||||
|
@ -12274,8 +12274,10 @@ SELECT U3.UserID as ItemID, U3.FirstName + '' '' + U3.LastName as TextSearch, @c
|
|||
FROM dbo.Users AS U3) as U
|
||||
WHERE TextSearch<>'' '' OR ISNULL(TextSearch, 0) > 0
|
||||
)
|
||||
AS U ON TU.UserID = U.ItemID
|
||||
ORDER BY TextSearch'
|
||||
AS U ON TU.UserID = U.ItemID'
|
||||
IF @FilterValue <> ''
|
||||
SET @sqlUsers = @sqlUsers + ' WHERE TextSearch LIKE ''' + @FilterValue + ''''
|
||||
SET @sqlUsers = @sqlUsers + ' ORDER BY TextSearch'
|
||||
|
||||
SET @sqlUsers = @sqlUsers + ' open @curValue'
|
||||
|
||||
|
@ -12288,12 +12290,8 @@ SET @sqlSpace = '
|
|||
ItemID int
|
||||
)
|
||||
INSERT INTO @ItemsService (ItemID)
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlSpace = @sqlSpace + 'SI.ItemID
|
||||
SELECT
|
||||
SI.ItemID
|
||||
FROM ServiceItems AS SI
|
||||
INNER JOIN Packages AS P ON P.PackageID = SI.PackageID
|
||||
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
|
||||
|
@ -12313,8 +12311,12 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
|
|||
dbo.CheckUserParent(@UserID, P.UserID) = 1
|
||||
|
||||
SET @curValue = cursor local for
|
||||
SELECT
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
SI.ItemID as ItemID,
|
||||
SI.ItemName as TextSearch,
|
||||
STYPE.DisplayName as ColumnType,
|
||||
|
@ -12324,9 +12326,17 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
|
|||
FROM @ItemsService AS I
|
||||
INNER JOIN ServiceItems AS SI ON I.ItemID = SI.ItemID
|
||||
INNER JOIN ServiceItemTypes AS STYPE ON SI.ItemTypeID = STYPE.ItemTypeID
|
||||
WHERE STYPE.Searchable = 1
|
||||
UNION
|
||||
SELECT
|
||||
WHERE (STYPE.Searchable = 1)'
|
||||
IF @FilterValue <> ''
|
||||
SET @sqlSpace = @sqlSpace + ' AND (SI.ItemName LIKE ''' + @FilterValue + ''')'
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
UNION (
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
D.DomainID AS ItemID,
|
||||
D.DomainName as TextSearch,
|
||||
''Domain'' as ColumnType,
|
||||
|
@ -12335,19 +12345,67 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
|
|||
0 as AccountID
|
||||
FROM @ItemsDomain AS I
|
||||
INNER JOIN Domains AS D ON I.ItemID = D.DomainID
|
||||
WHERE D.IsDomainPointer=0
|
||||
WHERE (D.IsDomainPointer=0)'
|
||||
IF @FilterValue <> ''
|
||||
SET @sqlSpace = @sqlSpace + ' AND (D.DomainName LIKE ''' + @FilterValue + ''')'
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
UNION
|
||||
SELECT
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
EA.ItemID AS ItemID,
|
||||
EA.AccountName as TextSearch,
|
||||
EA.DisplayName as TextSearch,
|
||||
''ExchangeAccount'' as ColumnType,
|
||||
''ExchangeAccountMailbox'' as FullType,
|
||||
''ExchangeAccount'' as FullType,
|
||||
SI2.PackageID as PackageID,
|
||||
EA.AccountID as AccountID
|
||||
FROM @ItemsService AS I2
|
||||
INNER JOIN ServiceItems AS SI2 ON I2.ItemID = SI2.ItemID
|
||||
INNER JOIN ExchangeAccounts AS EA ON I2.ItemID = EA.ItemID
|
||||
ORDER BY TextSearch';
|
||||
INNER JOIN ExchangeAccounts AS EA ON I2.ItemID = EA.ItemID'
|
||||
IF @FilterValue <> ''
|
||||
SET @sqlSpace = @sqlSpace + ' WHERE (EA.DisplayName LIKE ''' + @FilterValue + ''')'
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
UNION
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
EA4.ItemID AS ItemID,
|
||||
EA4.PrimaryEmailAddress as TextSearch,
|
||||
''ExchangeAccount'' as ColumnType,
|
||||
''ExchangeAccount'' as FullType,
|
||||
SI4.PackageID as PackageID,
|
||||
EA4.AccountID as AccountID
|
||||
FROM @ItemsService AS I4
|
||||
INNER JOIN ServiceItems AS SI4 ON I4.ItemID = SI4.ItemID
|
||||
INNER JOIN ExchangeAccounts AS EA4 ON I4.ItemID = EA4.ItemID'
|
||||
IF @FilterValue <> ''
|
||||
SET @sqlSpace = @sqlSpace + ' WHERE (EA4.PrimaryEmailAddress LIKE ''' + @FilterValue + ''')'
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
UNION
|
||||
SELECT '
|
||||
|
||||
IF @OnlyFind = 1
|
||||
SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
|
||||
|
||||
SET @sqlSpace = @sqlSpace + '
|
||||
I3.ItemID AS ItemID,
|
||||
EAEA.EmailAddress as TextSearch,
|
||||
''ExchangeAccount'' as ColumnType,
|
||||
''ExchangeAccount'' as FullType,
|
||||
SI3.PackageID as PackageID,
|
||||
0 as AccountID
|
||||
FROM @ItemsService AS I3
|
||||
INNER JOIN ServiceItems AS SI3 ON I3.ItemID = SI3.ItemID
|
||||
INNER JOIN ExchangeAccountEmailAddresses AS EAEA ON I3.ItemID = EAEA.AccountID'
|
||||
IF @FilterValue <> ''
|
||||
SET @sqlSpace = @sqlSpace + ' WHERE (EAEA.EmailAddress LIKE ''' + @FilterValue + ''')'
|
||||
SET @sqlSpace = @sqlSpace + ') ORDER BY TextSearch';
|
||||
|
||||
SET @sqlSpace = @sqlSpace + ' open @curValue'
|
||||
|
||||
|
@ -12411,9 +12469,6 @@ SET @sqlReturn = @sqlReturn + ' AND IA.ColumnType in ( ' + @ColType + ' ) ';
|
|||
IF @FullType <> ''
|
||||
SET @sqlReturn = @sqlReturn + ' AND IA.FullType = ''' + @FullType + '''';
|
||||
|
||||
IF @FilterValue <> ''
|
||||
SET @sqlReturn = @sqlReturn + ' AND IA.' + @FilterColumn + ' LIKE @FilterValue '
|
||||
|
||||
SET @sqlReturn = @sqlReturn + '
|
||||
SELECT COUNT(ItemID) FROM @ItemsReturn;
|
||||
SELECT DISTINCT(ColumnType) FROM @ItemsReturn WHERE (1 = 1) ';
|
||||
|
|
|
@ -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
|
@ -285,10 +285,22 @@ namespace WebsitePanel.Import.Enterprise
|
|||
case "group":
|
||||
if (child.Properties["mail"] != null)
|
||||
email = (string)child.Properties["mail"].Value;
|
||||
|
||||
bool isDistributionList = false;
|
||||
|
||||
if ((typeProp != null) && (typeProp.Value != null) && (1073741833 == (int)typeProp.Value))
|
||||
isDistributionList = true;
|
||||
|
||||
if (typeDetails == 262144)
|
||||
isDistributionList = true;
|
||||
|
||||
if (typeDetails == 0)
|
||||
isDistributionList = true;
|
||||
|
||||
if (isDistributionList)
|
||||
{
|
||||
//Universal Security Group
|
||||
type = "Mail-Enabled Universal Security Group";
|
||||
type = "Distribution List";
|
||||
//email
|
||||
PropertyValueCollection proxyAddresses = child.Properties["proxyAddresses"];
|
||||
if (proxyAddresses != null)
|
||||
|
|
|
@ -141,6 +141,8 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
|
||||
private System.Threading.SendOrPostCallback ImportCollectionOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetRemoteDesktopServiceIdOperationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public esRemoteDesktopServices() {
|
||||
this.Url = "http://localhost:9002/esRemoteDesktopServices.asmx";
|
||||
|
@ -311,6 +313,9 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
/// <remarks/>
|
||||
public event ImportCollectionCompletedEventHandler ImportCollectionCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetRemoteDesktopServiceIdCompletedEventHandler GetRemoteDesktopServiceIdCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsCollection", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public RdsCollection GetRdsCollection(int collectionId) {
|
||||
|
@ -2772,6 +2777,47 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRemoteDesktopServiceId", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public int GetRemoteDesktopServiceId(int itemId) {
|
||||
object[] results = this.Invoke("GetRemoteDesktopServiceId", new object[] {
|
||||
itemId});
|
||||
return ((int)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginGetRemoteDesktopServiceId(int itemId, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("GetRemoteDesktopServiceId", new object[] {
|
||||
itemId}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public int EndGetRemoteDesktopServiceId(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((int)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetRemoteDesktopServiceIdAsync(int itemId) {
|
||||
this.GetRemoteDesktopServiceIdAsync(itemId, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetRemoteDesktopServiceIdAsync(int itemId, object userState) {
|
||||
if ((this.GetRemoteDesktopServiceIdOperationCompleted == null)) {
|
||||
this.GetRemoteDesktopServiceIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRemoteDesktopServiceIdOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetRemoteDesktopServiceId", new object[] {
|
||||
itemId}, this.GetRemoteDesktopServiceIdOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetRemoteDesktopServiceIdOperationCompleted(object arg) {
|
||||
if ((this.GetRemoteDesktopServiceIdCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetRemoteDesktopServiceIdCompleted(this, new GetRemoteDesktopServiceIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
|
@ -4207,4 +4253,30 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void GetRemoteDesktopServiceIdCompletedEventHandler(object sender, GetRemoteDesktopServiceIdCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetRemoteDesktopServiceIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetRemoteDesktopServiceIdCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public int Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((int)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,6 +56,11 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
}
|
||||
|
||||
public static int GetRemoteDesktopServiceId(int itemId)
|
||||
{
|
||||
return GetRdsServiceId(itemId);
|
||||
}
|
||||
|
||||
public static RdsCollection GetRdsCollection(int collectionId)
|
||||
{
|
||||
return GetRdsCollectionInternal(collectionId);
|
||||
|
|
|
@ -392,5 +392,11 @@ namespace WebsitePanel.EnterpriseServer
|
|||
{
|
||||
return RemoteDesktopServicesController.ImportCollection(itemId, collectionName);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public int GetRemoteDesktopServiceId(int itemId)
|
||||
{
|
||||
return RemoteDesktopServicesController.GetRemoteDesktopServiceId(itemId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ namespace WebsitePanel.EnterpriseServer.Base.RDS
|
|||
public const string DISABLE_CMD = "DisableCMD";
|
||||
public const string DISABLE_CMD_ADMINISTRATORS = "DisableCMDAdministrators";
|
||||
public const string DISABLE_CMD_USERS = "DisableCMDUsers";
|
||||
public const string ALLOWCONNECTIONSIMPORT = "AllowConnectionsImport";
|
||||
public const string ALLOWCOLLECTIONSIMPORT = "AllowCollectionsImport";
|
||||
|
||||
public string SettingsName { get; set; }
|
||||
public int ServerId { get; set; }
|
||||
|
|
|
@ -228,21 +228,31 @@ namespace WebsitePanel.Providers.Virtualization
|
|||
|
||||
try
|
||||
{
|
||||
Command cmd = new Command("Get-VM");
|
||||
HostedSolutionLog.LogInfo("Before Get-VM command");
|
||||
|
||||
Command cmd = new Command("Get-VM");
|
||||
Collection<PSObject> result = PowerShell.Execute(cmd, true);
|
||||
|
||||
HostedSolutionLog.LogInfo("After Get-VM command");
|
||||
foreach (PSObject current in result)
|
||||
{
|
||||
VirtualMachine vm = new VirtualMachine
|
||||
{
|
||||
VirtualMachineId = current.GetProperty("Id").ToString(),
|
||||
Name = current.GetString("Name"),
|
||||
State = current.GetEnum<VirtualMachineState>("State"),
|
||||
Uptime = Convert.ToInt64(current.GetProperty<TimeSpan>("UpTime").TotalMilliseconds),
|
||||
ReplicationState = current.GetEnum<ReplicationState>("ReplicationState")
|
||||
};
|
||||
HostedSolutionLog.LogInfo("- start VM -");
|
||||
var vm = new VirtualMachine();
|
||||
HostedSolutionLog.LogInfo("create");
|
||||
vm.VirtualMachineId = current.GetProperty("Id").ToString();
|
||||
HostedSolutionLog.LogInfo("VirtualMachineId {0}", vm.VirtualMachineId);
|
||||
vm.Name = current.GetString("Name");
|
||||
HostedSolutionLog.LogInfo("Name {0}", vm.Name);
|
||||
vm.State = current.GetEnum<VirtualMachineState>("State");
|
||||
HostedSolutionLog.LogInfo("State {0}", vm.State);
|
||||
vm.Uptime = Convert.ToInt64(current.GetProperty<TimeSpan>("UpTime").TotalMilliseconds);
|
||||
HostedSolutionLog.LogInfo("Uptime {0}", vm.Uptime);
|
||||
vm.ReplicationState = current.GetEnum<ReplicationState>("ReplicationState");
|
||||
HostedSolutionLog.LogInfo("ReplicationState {0}", vm.ReplicationState);
|
||||
vmachines.Add(vm);
|
||||
HostedSolutionLog.LogInfo("- end VM -");
|
||||
}
|
||||
HostedSolutionLog.LogInfo("Finish");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
|
@ -430,7 +430,7 @@ namespace WebsitePanel.WebDavPortal.Resources {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Initials.
|
||||
/// Looks up a localized string similar to Middle Initial.
|
||||
/// </summary>
|
||||
public static string Initials {
|
||||
get {
|
||||
|
|
|
@ -235,7 +235,7 @@
|
|||
<value>Info</value>
|
||||
</data>
|
||||
<data name="Initials" xml:space="preserve">
|
||||
<value>Initials</value>
|
||||
<value>Middle Initial</value>
|
||||
</data>
|
||||
<data name="ItemExist" xml:space="preserve">
|
||||
<value>File already exist</value>
|
||||
|
|
|
@ -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>
|
||||
|
@ -5292,9 +5298,6 @@
|
|||
<data name="UserItemType.ExchangeAccount" xml:space="preserve">
|
||||
<value>Exchange Account</value>
|
||||
</data>
|
||||
<data name="UserItemType.ExchangeAccountMailbox" xml:space="preserve">
|
||||
<value>Exchange Mailbox</value>
|
||||
</data>
|
||||
<data name="UserItemType.Users" xml:space="preserve">
|
||||
<value>Account Home</value>
|
||||
</data>
|
||||
|
|
|
@ -380,3 +380,74 @@ p.warningText {font-size:14px; color:Red; text-align:center;}
|
|||
.ui-menu-item:hover {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.tip-bluesimple {
|
||||
z-index:1000;
|
||||
text-align:left;
|
||||
border:1px solid #5e86aa;
|
||||
border-radius:4px;
|
||||
-moz-border-radius:4px;
|
||||
-webkit-border-radius:4px;
|
||||
min-width:50px;
|
||||
max-width:300px;
|
||||
color:#333;
|
||||
background-color:#ffffff;
|
||||
/**
|
||||
* - If you set a background-image, border/padding/background-color will be ingnored.
|
||||
* You can set any padding to .tip-inner instead if you need.
|
||||
* - If you want a tiled background-image and border/padding for the tip,
|
||||
* set the background-image to .tip-inner instead.
|
||||
*/
|
||||
}
|
||||
.tip-bluesimple .tip-inner {
|
||||
font:12px/16px arial,helvetica,sans-serif;
|
||||
}
|
||||
|
||||
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
|
||||
.tip-bluesimple .tip-arrow-top {
|
||||
margin-top:-6px;
|
||||
margin-left:-5px; /* approx. half the width to center it */
|
||||
top:0;
|
||||
left:50%;
|
||||
width:9px;
|
||||
height:6px;
|
||||
}
|
||||
.tip-bluesimple .tip-arrow-right {
|
||||
margin-top:-4px; /* approx. half the height to center it */
|
||||
margin-left:0;
|
||||
top:50%;
|
||||
left:100%;
|
||||
width:6px;
|
||||
height:9px;
|
||||
}
|
||||
.tip-bluesimple .tip-arrow-bottom {
|
||||
margin-top:0;
|
||||
margin-left:-5px; /* approx. half the width to center it */
|
||||
top:100%;
|
||||
left:50%;
|
||||
width:9px;
|
||||
height:6px;
|
||||
}
|
||||
.tip-bluesimple .tip-arrow-left {
|
||||
margin-top:-3px; /* approx. half the height to center it */
|
||||
margin-left:-6px;
|
||||
top:50%;
|
||||
left:0;
|
||||
width:6px;
|
||||
height:9px;
|
||||
}
|
||||
|
||||
.popover-title {
|
||||
padding: 8px 14px;
|
||||
margin: 0 !important;
|
||||
font-size: 14px;
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
border-radius: 5px 5px 0 0;
|
||||
}
|
||||
|
||||
.popover-content {
|
||||
padding:6px 8px;
|
||||
}
|
|
@ -163,7 +163,7 @@
|
|||
<value>Home Phone:</value>
|
||||
</data>
|
||||
<data name="locInitials.Text" xml:space="preserve">
|
||||
<value>Initials:</value>
|
||||
<value>Middle Initial:</value>
|
||||
</data>
|
||||
<data name="locJobTitle.Text" xml:space="preserve">
|
||||
<value>Job Title:</value>
|
||||
|
|
|
@ -157,7 +157,7 @@
|
|||
<value>Home Phone:</value>
|
||||
</data>
|
||||
<data name="locInitials.Text" xml:space="preserve">
|
||||
<value>Initials:</value>
|
||||
<value>Middle Initial:</value>
|
||||
</data>
|
||||
<data name="locJobTitle.Text" xml:space="preserve">
|
||||
<value>Job Title:</value>
|
||||
|
|
|
@ -166,7 +166,7 @@
|
|||
<value>Home Phone:</value>
|
||||
</data>
|
||||
<data name="locInitials.Text" xml:space="preserve">
|
||||
<value>Initials:</value>
|
||||
<value>Middle Initial:</value>
|
||||
</data>
|
||||
<data name="locJobTitle.Text" xml:space="preserve">
|
||||
<value>Job Title:</value>
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
<td>
|
||||
<asp:TextBox ID="txtFirstName" runat="server" CssClass="TextBox100"></asp:TextBox>
|
||||
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Initials:" />
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Middle Initial:" />
|
||||
<asp:TextBox ID="txtInitials" runat="server" CssClass="TextBox100"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,31 +1,3 @@
|
|||
// Copyright (c) 2015, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
<td>
|
||||
<asp:TextBox ID="txtFirstName" runat="server" CssClass="TextBox100" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Initials:" />
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Middle Initial:" />
|
||||
<asp:TextBox ID="txtInitials" runat="server" MaxLength="6" CssClass="TextBox100" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<td>
|
||||
<asp:TextBox ID="txtFirstName" runat="server" CssClass="TextBox100" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Initials:" />
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Middle Initial:" />
|
||||
<asp:TextBox ID="txtInitials" runat="server" MaxLength="6" CssClass="TextBox100" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<td>
|
||||
<asp:label ID="lblFirstName" runat="server"></asp:label>
|
||||
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Initials:" />
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Middle Initial:" />
|
||||
<asp:Label ID="lblInitials" runat="server"></asp:Label>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
<td>
|
||||
<asp:TextBox ID="txtFirstName" runat="server" CssClass="TextBox100"></asp:TextBox>
|
||||
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Initials:" />
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Middle Initial:" />
|
||||
<asp:TextBox ID="txtInitials" runat="server" MaxLength="6" CssClass="TextBox100"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -295,3 +295,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -147,4 +147,7 @@
|
|||
<data name="lblComputersRootOU.Text" xml:space="preserve">
|
||||
<value>Computers Root OU:</value>
|
||||
</data>
|
||||
<data name="cbCollectionsImport.Text" xml:space="preserve">
|
||||
<value>Allow Collections Import</value>
|
||||
</data>
|
||||
</root>
|
|
@ -58,6 +58,11 @@
|
|||
</fieldset>
|
||||
<fieldset>
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<asp:CheckBox runat="server" Text="Allow Collections Import" ID="cbCollectionsImport" meta:resourcekey="cbCollectionsImport" Checked="false" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" width="200" nowrap>
|
||||
<asp:Label runat="server" ID="lblConnectionBroker" meta:resourcekey="lblConnectionBroker" Text="Connection Broker:"/>
|
||||
|
|
|
@ -32,6 +32,7 @@ using System.Collections.Generic;
|
|||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.EnterpriseServer.Base.RDS;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||
|
||||
|
@ -98,6 +99,11 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
txtCentralNPS.Enabled = false;
|
||||
txtCentralNPS.Text = string.Empty;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(settings[RdsServerSettings.ALLOWCOLLECTIONSIMPORT]))
|
||||
{
|
||||
cbCollectionsImport.Checked = Convert.ToBoolean(settings[RdsServerSettings.ALLOWCOLLECTIONSIMPORT]);
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveSettings(System.Collections.Specialized.StringDictionary settings)
|
||||
|
@ -108,6 +114,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
settings["PrimaryDomainController"] = txtPrimaryDomainController.Text;
|
||||
settings["UseCentralNPS"] = chkUseCentralNPS.Checked.ToString();
|
||||
settings["CentralNPS"] = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty;
|
||||
settings[RdsServerSettings.ALLOWCOLLECTIONSIMPORT] = cbCollectionsImport.Checked.ToString();
|
||||
|
||||
settings["GWServrsList"] = GWServers;
|
||||
|
||||
|
|
|
@ -84,6 +84,15 @@ namespace WebsitePanel.Portal.ProviderControls {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblExpiryDate;
|
||||
|
||||
/// <summary>
|
||||
/// cbCollectionsImport control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox cbCollectionsImport;
|
||||
|
||||
/// <summary>
|
||||
/// lblConnectionBroker control.
|
||||
/// </summary>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
|
@ -55,8 +56,10 @@ namespace WebsitePanel.Portal.RDS
|
|||
btnAddCollection.Enabled = (!(cntx.Quotas[Quotas.RDS_COLLECTIONS].QuotaAllocatedValue <= gvRDSCollections.Rows.Count) || (cntx.Quotas[Quotas.RDS_COLLECTIONS].QuotaAllocatedValue == -1));
|
||||
}
|
||||
|
||||
var defaultSettings = ES.Services.Users.GetUserSettings(PanelSecurity.EffectiveUserId, UserSettings.RDS_POLICY);
|
||||
var allowImport = Convert.ToBoolean(defaultSettings[RdsServerSettings.ALLOWCONNECTIONSIMPORT]);
|
||||
var serviceId = ES.Services.RDS.GetRemoteDesktopServiceId(PanelRequest.ItemID);
|
||||
var settings = ConvertArrayToDictionary(ES.Services.Servers.GetServiceSettings(serviceId));
|
||||
|
||||
var allowImport = Convert.ToBoolean(settings[RdsServerSettings.ALLOWCOLLECTIONSIMPORT]);
|
||||
|
||||
if (!allowImport)
|
||||
{
|
||||
|
@ -64,6 +67,8 @@ namespace WebsitePanel.Portal.RDS
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void BindQuota(PackageContext cntx)
|
||||
{
|
||||
OrganizationStatistics stats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
|
||||
|
@ -142,5 +147,16 @@ namespace WebsitePanel.Portal.RDS
|
|||
{
|
||||
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "rds_edit_collection", "CollectionId=" + collectionId, "ItemID=" + PanelRequest.ItemID);
|
||||
}
|
||||
|
||||
private StringDictionary ConvertArrayToDictionary(string[] settings)
|
||||
{
|
||||
StringDictionary r = new StringDictionary();
|
||||
foreach (string setting in settings)
|
||||
{
|
||||
int idx = setting.IndexOf('=');
|
||||
r.Add(setting.Substring(0, idx), setting.Substring(idx + 1));
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -181,14 +181,3 @@
|
|||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
<wsp:CollapsiblePanel id="secAllowImport" runat="server" TargetControlID="allowImportPanel" meta:resourcekey="secAllowImport" Text="Connections Import"/>
|
||||
<asp:Panel ID="allowImportPanel" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox runat="server" Text="Users" ID="cbAllowImport" meta:resourcekey="cbAllowImport" Checked="false" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
|
|
@ -53,7 +53,6 @@ namespace WebsitePanel.Portal
|
|||
cbDisableCmdUsers.Checked = Convert.ToBoolean(settings[RdsServerSettings.DISABLE_CMD_USERS]);
|
||||
|
||||
ddTreshold.SelectedValue = settings[RdsServerSettings.DRIVE_SPACE_THRESHOLD_VALUE];
|
||||
cbAllowImport.Checked = Convert.ToBoolean(settings[RdsServerSettings.ALLOWCONNECTIONSIMPORT]);
|
||||
}
|
||||
|
||||
public void SaveSettings(UserSettings settings)
|
||||
|
@ -82,7 +81,6 @@ namespace WebsitePanel.Portal
|
|||
settings[RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION_Users] = cbControlSessionUsers.Checked.ToString();
|
||||
settings[RdsServerSettings.DISABLE_CMD_ADMINISTRATORS] = cbDisableCmdAdministrators.Checked.ToString();
|
||||
settings[RdsServerSettings.DISABLE_CMD_USERS] = cbDisableCmdUsers.Checked.ToString();
|
||||
settings[RdsServerSettings.ALLOWCONNECTIONSIMPORT] = cbAllowImport.Checked.ToString();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -443,32 +443,5 @@ namespace WebsitePanel.Portal {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox cbDisableCmdAdministrators;
|
||||
|
||||
/// <summary>
|
||||
/// secAllowImport control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secAllowImport;
|
||||
|
||||
/// <summary>
|
||||
/// allowImportPanel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Panel allowImportPanel;
|
||||
|
||||
/// <summary>
|
||||
/// cbAllowImport control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox cbAllowImport;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
$ImgBtn.attr('disabled', 'disabled');
|
||||
}
|
||||
});
|
||||
if (document.referrer.search("pid=Login") > 0) {
|
||||
if (document.referrer.search("pid=Login") > 0 || window.location.href.search("pid=SearchObject") > 0) {
|
||||
$("#<%= tbSearch.ClientID %>").focus();
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ namespace WebsitePanel.Portal.SkinControls
|
|||
const string TYPE_DOMAIN = "Domain";
|
||||
const string TYPE_ORGANIZATION = "Organization";
|
||||
const string TYPE_EXCHANGEACCOUNT = "ExchangeAccount";
|
||||
const string TYPE_EXCHANGEACCOUNT_MAILBOX = "ExchangeAccountMailbox";
|
||||
const string PID_SPACE_WEBSITES = "SpaceWebSites";
|
||||
const string PID_SPACE_DIMAINS = "SpaceDomains";
|
||||
const string PID_SPACE_EXCHANGESERVER = "SpaceExchangeServer";
|
||||
|
@ -151,12 +150,6 @@ namespace WebsitePanel.Portal.SkinControls
|
|||
"moduleDefId=ExchangeServer");
|
||||
break;
|
||||
case TYPE_EXCHANGEACCOUNT:
|
||||
res = PortalUtils.NavigatePageURL(PID_SPACE_EXCHANGESERVER, "ItemID", itemId.ToString(),
|
||||
PortalUtils.SPACE_ID_PARAM + "=" + spaceId, "ctl=edit_user",//"mid="+this.ModuleID.ToString(),
|
||||
"AccountID="+this.tbAccountId.Text,"Context=User",
|
||||
"moduleDefId=ExchangeServer");
|
||||
break;
|
||||
case TYPE_EXCHANGEACCOUNT_MAILBOX:
|
||||
res = PortalUtils.NavigatePageURL(PID_SPACE_EXCHANGESERVER, "ItemID", itemId.ToString(),
|
||||
PortalUtils.SPACE_ID_PARAM + "=" + spaceId, "ctl=edit_user",//"mid="+this.ModuleID.ToString(),
|
||||
"AccountID=" + this.tbAccountId.Text, "Context=Mailbox",
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
<asp:HyperLink ID="lnkGenerate" runat="server" NavigateUrl="#" meta:resourcekey="lnkGenerate" Visible="false">Generate random</asp:HyperLink></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label id="lblConfirmPassword" runat="server" meta:resourcekey="lblConfirmPassword"></asp:Label></td>
|
||||
<td class="SubHead">
|
||||
<asp:Label ID="lblConfirmPassword" runat="server" meta:resourcekey="lblConfirmPassword"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal">
|
||||
|
@ -34,3 +35,54 @@
|
|||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<% if (ValidationEnabled)
|
||||
{%>
|
||||
<div style="display: none;" id="password-hint-popup">
|
||||
<h3 class="popover-title">
|
||||
Password must meet the following requirements:
|
||||
</h3>
|
||||
<ul class="popover-content">
|
||||
|
||||
<li><%= string.Format("Password should be at least {0} characters", MinimumLength) %>
|
||||
</li>
|
||||
<li><%= string.Format("Password should be maximum {0} characters", MaximumLength) %>
|
||||
</li>
|
||||
|
||||
<% if (MinimumUppercase > 0)
|
||||
{%>
|
||||
<li><%= string.Format("Password should contain at least {0} UPPERCASE characters", MinimumUppercase) %>
|
||||
</li>
|
||||
<% }%>
|
||||
<% if (MinimumNumbers > 0)
|
||||
{%>
|
||||
<li><%= string.Format("Password should contain at least {0} numbers", MinimumNumbers) %>
|
||||
</li>
|
||||
<% }%>
|
||||
<% if (MinimumSymbols > 0)
|
||||
{%>
|
||||
<li><%= string.Format("Password should contain at least {0} non-alphanumeric symbols", MinimumSymbols) %>
|
||||
</li>
|
||||
<% }%>
|
||||
</ul>
|
||||
</div>
|
||||
<% }%>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(function () {
|
||||
$('#<%=txtPassword.ClientID%>').poshytip({
|
||||
className: 'tip-bluesimple',
|
||||
showOn: 'focus',
|
||||
alignTo: 'target',
|
||||
alignX: 'center',
|
||||
alignY: 'bottom',
|
||||
offsetX: 2,
|
||||
content: function () {
|
||||
return $('#password-hint-popup').html();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -278,6 +278,8 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
", true);
|
||||
|
||||
|
||||
Page.ClientScript.RegisterClientScriptInclude("jqueryui-tooltip", ResolveUrl("~/JavaScript/jquery.poshytip.min.js"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,35 +1,6 @@
|
|||
// Copyright (c) 2015, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
// are permitted provided that the following conditions are met:
|
||||
//
|
||||
// - Redistributions of source code must retain the above copyright notice, this
|
||||
// list of conditions and the following disclaimer.
|
||||
//
|
||||
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||
// this list of conditions and the following disclaimer in the documentation
|
||||
// and/or other materials provided with the distribution.
|
||||
//
|
||||
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.1873
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
|
|
|
@ -6538,7 +6538,9 @@
|
|||
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionApps.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="ProviderControls\App_LocalResources\RDS_Settings.ascx.resx" />
|
||||
<Content Include="ProviderControls\App_LocalResources\RDS_Settings.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="UserControls\App_LocalResources\DomainControl.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
|
|
7
WebsitePanel/Sources/WebsitePanel.WebPortal/JavaScript/jquery.poshytip.min.js
vendored
Normal file
7
WebsitePanel/Sources/WebsitePanel.WebPortal/JavaScript/jquery.poshytip.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -241,6 +241,7 @@
|
|||
<Content Include="Error.htm" />
|
||||
<Content Include="JavaScript\jquery-1.4.4.min.js" />
|
||||
<Content Include="JavaScript\jquery-ui-1.8.9.min.js" />
|
||||
<Content Include="JavaScript\jquery.poshytip.min.js" />
|
||||
<Content Include="JavaScript\jquery.window.js" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -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