﻿<?xml version="1.0" encoding="utf-8" ?>

<InstBroker>
  <BrokerRequests>

    <BrokerRequest Name="Prerequisite Check">
      <!--OS Check-->
      <Request Name="CheckOS" Library="InstallTools" Class="Installer.InstallRequests.CheckOSRequest"
               EstTime="1000" TimeOut="100000" UIName="#CheckOperatingSystemRequiremen" ProgressBar="Animation" ActionOnFail="Continue"
               ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ValidOS>WindowsServer2008|Windows7|WindowsServer2008R2|Windows8|WindowsServer2012</ValidOS>
        <ValidServicePacks>0|0|0|0|0</ValidServicePacks>
        <ValidArch>x32|x64</ValidArch>
        <InvalidEditions>Starter</InvalidEditions>
      </Request>

      <!--Previous ENM/APM Install Check-->
      <Request Name="CheckPreviousENMInstalls" EstTime="500" TimeOut="100000" UIName="#ENS_CheckingSystemForPreviousENMInstalls" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule</globalSetupType>
        </ConditionTrue>
        <Method>
          <!--APM 6.3-->
          <CheckRegistryValueDataNOTExistingInView Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.SetupRegistry" UIMessageOnFail="#ENS_APMDetected" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <regPath>SOFTWARE\Schneider-Electric\PowerLogic eSolutions\APM</regPath>
            <value>Version</value>
            <dataValues>6.3.0.0</dataValues>
            <registryView>Registry32</registryView>
          </CheckRegistryValueDataNOTExistingInView>

        </Method>
      </Request>

      <!--Check Formal Product Name of ENM - Needed for Installer Framework v1.7-->
      <Request Name="CheckFormalProductName" EstTime="500" TimeOut="100000" UIName="#ENS_CheckingSystemFormalProductName" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <Method>

          <!--Fixes the Formal Product Name - in Installer Framework v1.7 the globalFormalProductName is used for the install directory
          After the File Destination page in the install is loaded we need to change the variable to be more specific to our product.
          Since SER and ENM share the same directory it is originally named to StruxtureWare Solutions in the Setup.xml -
          Afterwards it is changed here to be more specific so that the name displayed in Add/Remove Programs is different.-->
          <fixSharedProductName Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.SharedComponents" SetReturnProperty="globalBrandProductFormalName" UIMessageOnFail="#ENS_FailedFixingFormalProductName"
                                   ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <productName>@globalBrandProductName</productName>
          </fixSharedProductName>

        </Method>
      </Request>

      <!-- Gets the version of ION/SPM/PME installed on the system - if ION/SPM/PME is installed
           Note that this was previously hard coded before ENM 8.2 - this is to possibly avoid updating the installer
           for new changes to PME which are not functional pieces that involve ENM. -->
      <Request Name="CheckPMEVersion" EstTime="500" TimeOut="100000" UIName="#ENS_CheckingPMEVersion" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <Custom_Solution_IsIonEnterpriseInstalled>true</Custom_Solution_IsIonEnterpriseInstalled>
        </ConditionTrue>
        <Method>
          
          <getIONVersionNumberFromReg Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.RegistryHelper" SetReturnProperty="Custom_IONVersionNumber" UIMessageOnFail="#ENS_FailedGettingIONVersion"
                                   ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <key>SOFTWARE\Schneider Electric\ION Enterprise</key>
            <registryView>Registry32</registryView>
          </getIONVersionNumberFromReg>

        </Method>
      </Request>
      
      <!--Previous SER Install Check-->
      <Request Name="CheckPreviousSERInstalls" EstTime="500" TimeOut="100000" UIName="#ENS_CheckingSystemForPreviousSERInstalls" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <!--SER 7.3-->
          <CheckRegistryValueDataNOTExistingInView Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.SetupRegistry" UIMessageOnFail="#ENS_SERDetected" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <regPath>SOFTWARE\Schneider-Electric\PowerLogic eSolutions\SER</regPath>
            <value>Version</value>
            <dataValues>7.3.0.0</dataValues>
            <registryView>Registry32</registryView>
          </CheckRegistryValueDataNOTExistingInView>

          <isVersionBelowOrEqual Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.SetupRegistry" SetReturnProperty="Custom_isSERVersion_7_6_OrBelow" UIMessageOnFail="#ENS_SERDetected" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <regPath>SOFTWARE\Schneider-Electric\PowerLogic eSolutions\SER</regPath>
            <keyValue>Version</keyValue>
            <versionToCheck>7.6.0.0</versionToCheck>
          </isVersionBelowOrEqual>

          <isVersionBelowOrEqual Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.SetupRegistry" SetReturnProperty="Custom_isSERVersionBelowOrEqual" UIMessageOnFail="#ENS_SERDetected" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <regPath>SOFTWARE\Schneider-Electric\PowerLogic eSolutions\SER</regPath>
            <keyValue>Version</keyValue>
            <versionToCheck>8.0.0.0</versionToCheck>
          </isVersionBelowOrEqual>

        </Method>
      </Request>

      <!--SQL Version Check-->
      <Request Name="CheckSQLServerVersionEdition32bit" EstTime="500" TimeOut="100000" UIName="#Check32bitSQLServerVersionandE" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#Errorsettingconnectionstring">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <CheckSqlEdition Library="DatabaseBusiness" Class="Installer.InstallTools.DBInstaller" UIMessageOnFail="#TheEditonoftheselectedSQLServe">
            <RequiredSQLEdition>Express Edition|Express Edition with Advanced Services|Standard Edition|Enterprise Edition</RequiredSQLEdition>
          </CheckSqlEdition>
          <CheckSqlVersion Library="DatabaseBusiness" Class="Installer.InstallTools.DBInstaller" UIMessageOnFail="#TheVersionoftheselectedSQLServ">
            <RequiredSQLVersionString>10.0.1600.0</RequiredSQLVersionString>
            <RequiredSQLVersionString>11.0.2100</RequiredSQLVersionString>
            <!--<RequiredSQLVersionString>11.0.3128</RequiredSQLVersionString> -->
          </CheckSqlVersion>
        </Method>
      </Request>

      <Request Name="CheckSQLServerVersionEdition64bit" EstTime="500" TimeOut="100000" UIName="#Check64bitSQLServerVersionandE" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#Errorsettingconnectionstring">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <CheckSqlEdition Library="DatabaseBusiness" Class="Installer.InstallTools.DBInstaller" UIMessageOnFail="#TheEditonoftheselectedSQLServe">
            <RequiredSQLEdition>Express Edition|Express Edition (64-bit)|Express Edition with Advanced Services (64-bit)|Standard Edition (64-bit)|Enterprise Edition (64-bit)</RequiredSQLEdition>
          </CheckSqlEdition>
          <CheckSqlVersion Library="DatabaseBusiness" Class="Installer.InstallTools.DBInstaller" UIMessageOnFail="#TheVersionoftheselectedSQLServ">
            <RequiredSQLVersionString>10.0.1600.0</RequiredSQLVersionString>
            <RequiredSQLVersionString>11.0.2100</RequiredSQLVersionString>
            <!--<RequiredSQLVersionString>11.0.3128</RequiredSQLVersionString> -->
            <!-- SQL Server 2008 RTM is 10.0.1600.22 -->
          </CheckSqlVersion>
        </Method>
      </Request>

      <!--SQL Local Instance Check-->
      <Request Name="CheckSQLServerInstance" EstTime="500" TimeOut="100000" UIName="#ENS_CheckingLocalSQLInstance" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <IsDatabaseLocalOrClustered Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#DatabaseLocationInvalid">
            <machineName>@globalEEMDBName</machineName>
          </IsDatabaseLocalOrClustered>
        </Method>
      </Request>

      <!--SQL Connection Check-->
      <Request Name="CheckSQLServerConnection" EstTime="500" TimeOut="100000" UIName="#ENS_CheckSQLServerConnection" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <VerifyConnection Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#Errorvalidatingconnectionstring" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
          </VerifyConnection>
        </Method>
      </Request>

      <!--SQL Permissions Check-->
      <Request Name="CheckSqlServerAccountPermission" EstTime="500" TimeOut="100000" UIName="#ENS_CheckSQLServerPermissions" ProgressBar="Progress" ActionOnFail="Continue"
               ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <CheckServiceWriteAccess Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.NTServiceController" UIMessageOnFail="#ENS_CheckSQLServerPermError"
                                   ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <serviceName>@globalSQLServiceName/@</serviceName>
            <directory>@globalDatabaseBackupFolder/@</directory>
          </CheckServiceWriteAccess>
        </Method>
      </Request>

      <!-- Upgrade check for AEHistory-->
      <Request Name="CheckAEHistorySchema" EstTime="1000" TimeOut="100000" UIName="#ENS_CheckDBSchema" ProgressBar="Animation" ActionOnFail="Continue"
               ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString"
                               ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <CheckDBSchemaForUpgrade Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" SetReturnProperty="globalAction" UIMessageOnFail="#ENS_CheckDBSchemaFailed"
                                   ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <versionToInstall>@globalDisplayVersion</versionToInstall>
            <dbName>PLES_AEHistory</dbName>
          </CheckDBSchemaForUpgrade>
        </Method>
      </Request>

      <!--.NET 4.5.1 Check
      <Request Name="CheckNet4_5_1" EstTime="500" TimeOut="100000" UIName="#ENS_CheckNet4_5_1" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <GetNet451FromRegistry Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.SetupRegistry" UIMessageOnFail="#ENS_CheckNet4_5_1Error" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer" />

        </Method>
      </Request>-->

      <!--ASP.NET Check-->
      <Request Name="CheckASPNET" EstTime="500" TimeOut="100000" UIName="#ENS_CheckASPNETRequirement" ProgressBar="Progress" ActionOnFail="Prompt"  ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <CheckHKLMRegistyExisting Library="RegistrySetup" Class="Installer.InstallTools.SetupRegistry" UIMessageOnFail="#ENS_ASPNET4NotFound" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <regpath>SOFTWARE\Microsoft\ASP.NET\4.0.30319.0</regpath>
            <id>Path</id>
          </CheckHKLMRegistyExisting>
          <CheckWindowServiceExisting Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ASPNETNotInstalled" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <serviceName>aspnet_state</serviceName>
            <machineName></machineName>
          </CheckWindowServiceExisting>
        </Method>
      </Request>

      <!--Shared Components to Install Check-->
      <Request Name="CheckToInstallSharedComponentsForEnm" EstTime="500" TimeOut="100000" UIName="#ENS_CheckSharedComponents" ProgressBar="Animation" ActionOnFail="Continue"
               ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <CheckToInstallSharedComponentsForEnm  Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.SharedComponents" SetReturnProperty="Custom_InstallSharedComponents" UIMessageOnFail="#ENS_CheckSharedComponentsError"
                                                 ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <checks>@Custom_SERInstalled/@|@Custom_Solution_IsSERInstalled/@|@Custom_isSERVersion_7_6_OrBelow/@</checks>
          </CheckToInstallSharedComponentsForEnm>
        </Method>
      </Request>

      <!--Administration User Credentials Check-->
      <Request Name="VerifyWindowsAdminUser" EstTime="500" TimeOut="100000" UIName="#ENS_CheckingDatabaseMaintenanceCredentials" ProgressBar="Animation" ActionOnFail="Stop"  ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <CheckLocalUserExists Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_InvalidUserCredentials" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <userName>@globalUserName2</userName>
            <password>@globalUserPassword2</password>
          </CheckLocalUserExists>
          <CheckLocalUserIsAdministrator Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_UserNotAdministrator" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <userName>@globalUserName2</userName>
          </CheckLocalUserIsAdministrator>
        </Method>
      </Request>

      <Request Name="VerifySQLMixedMode" EstTime="500" TimeOut="100000" UIName="#ENS_CheckingSQLMixedMode" ProgressBar="Animation" ActionOnFail="Stop"  ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <IsAuthMixedMode Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_MixedModeNotEnabled" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
          </IsAuthMixedMode>
        </Method>
      </Request>


    </BrokerRequest>

    <BrokerRequest Name="InstallMsi">
      <Request Name="LaunchMsiRequest" Library="InstallTools" Class="Installer.InstallRequests.LaunchMsiRequest" EstTime="0" TimeOut="0" UIName="#Deployingfilestosystem" ProgressBar="Progress" ActionOnFail="Prompt">

        <!--Install x86 CLR Types for 2012 Support -->
        <MsiFile Name="SQLSysClrTypes.msi" Path="SetupSupport\SQLSystemCLRTypes\x86" SizeInMB="22" ProductGUID="89851C50-4EE1-4E74-8B47-1EFFC682EABD">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|DbServer|AppServer</globalSetupType>
            <globalIsx64>false</globalIsx64>
            <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x64 CLR Types for 2012 Support -->
        <MsiFile Name="SQLSysClrTypes.msi" Path="SetupSupport\SQLSystemCLRTypes\x64" SizeInMB="22" ProductGUID="7BB76A35-0930-48F5-89D2-054DB4AE35DA">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|DbServer|AppServer</globalSetupType>
            <globalIsx64>true</globalIsx64>
            <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>
        
      
        <!--Install x86 External Shared Files-->
        <MsiFile Name="SharedExternalFilesSetup(x86).msi" Path="Installers" SizeInMB="22" ProductGUID="C1CB7BE7-7F13-4129-8277-EA26135100E8">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
            <globalIsx64>false</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x64 External Shared Files-->
        <MsiFile Name="SharedExternalFilesSetup(x64).msi" Path="Installers" SizeInMB="22" ProductGUID="C1CB7BE7-7F13-4129-8277-EA26135100E8">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
            <globalIsx64>true</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>


        <!--Install x86 SMO Install for 2012 Support -->
        <MsiFile Name="SharedManagementObjects.msi" Path="SetupSupport\SharedManagementObjects\x86" SizeInMB="22" ProductGUID="8A8196C7-2323-4631-BA5C-4EE14EE4ED10">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|DbServer|AppServer</globalSetupType>
            <globalIsx64>false</globalIsx64>
            <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x64 SMO Install for 2012 Support -->
        <MsiFile Name="SharedManagementObjects.msi" Path="SetupSupport\SharedManagementObjects\x64" SizeInMB="22" ProductGUID="B017D704-A6B5-46EA-8909-6FA996B5B8B8">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|DbServer|AppServer</globalSetupType>
            <globalIsx64>true</globalIsx64>
            <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x86 EventNotificationModule-->
        <MsiFile Name="EventNotificationSetup(x86).msi" Path="Installers" SizeInMB="22" ProductGUID="513ce011-82e0-4a91-be0f-7c1bcc610932">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
            <globalIsx64>false</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x64 EventNotificationModule-->
        <MsiFile Name="EventNotificationSetup(x64).msi" Path="Installers" SizeInMB="22" ProductGUID="513ce011-82e0-4a91-be0f-7c1bcc610932">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
            <globalIsx64>true</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x86 EventNotificationDatabaseSetup-->
        <MsiFile Name="EventNotificationDatabaseSetup(x86).msi" Path="Installers" SizeInMB="22" ProductGUID="727b6185-c8a3-47d3-a79a-8e798e30d104">
          <ConditionTrue>
            <globalSetupType>DbServer</globalSetupType>
            <globalIsx64>false</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x64 EventNotificationDatabaseSetup-->
        <MsiFile Name="EventNotificationDatabaseSetup(x64).msi" Path="Installers" SizeInMB="22" ProductGUID="727b6185-c8a3-47d3-a79a-8e798e30d104">
          <ConditionTrue>
            <globalSetupType>DbServer</globalSetupType>
            <globalIsx64>true</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x86 PLSCADAOPCServer-->
        <MsiFile Name="PLScadaOPCServerSetup(x86).msi" Path="Installers" SizeInMB="2" ProductGUID="f1b4aaa4-2847-4acc-9a81-9374e333db97">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
            <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
            <globalIsx64>false</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>

        <!--Install x64 PLSCADAOPCServer-->
        <MsiFile Name="PLScadaOPCServerSetup(x64).msi" Path="Installers" SizeInMB="2" ProductGUID="f1b4aaa4-2847-4acc-9a81-9374e333db97">
          <ConditionTrue>
            <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
            <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
            <globalIsx64>true</globalIsx64>
          </ConditionTrue>
          <CommandLine>
            <INSTALLDIR>
              @globalProgramFileFolder
            </INSTALLDIR>
            <REBOOT>
              ReallySuppress
            </REBOOT>
          </CommandLine>
        </MsiFile>
      </Request>
    </BrokerRequest>

    <BrokerRequest Name="Configuration">

      <!--Backup AE History Before Migration-->
      <Request Name="BackupPrevHistoricalData" EstTime="120000" TimeOut="9000000" UIName="#ENS_UpgradeBackupPreviousHistData" ProgressBar="Animation"
               ActionOnFail="Stop" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <globalAction>Upgrade</globalAction>
        </ConditionTrue>
        <Method>
          <RunExecutableWithExitCode Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_UpgradeBackupFailed"
                                     ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <cmd>sqlcmd.exe</cmd>
            <args>-b -S @globalEEMDbServer/@ -E -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\UpgradeBackupHistoricalData.sql" -v BackupLocation="@globalDatabaseBackupFolder/@"</args>
            <failExitCodeAbove>0</failExitCodeAbove>
          </RunExecutableWithExitCode>
        </Method>
      </Request>

      <!--Trim AE History Before Migration-->
      <Request Name="TrimPrevV8HistoricalData" EstTime="120000" TimeOut="9000000" UIName="#ENS_UpgradeTrimPreviousHistData" ProgressBar="Animation"
               ActionOnFail="Stop" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <globalAction>Upgrade</globalAction>
        </ConditionTrue>
        <Method>
          <RunExecutableWithExitCode Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_UpgradeTrimFailed"
                                     ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <cmd>sqlcmd.exe</cmd>
            <args>-b -S @globalEEMDbServer/@ -E -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\UpgradeTrimEventsTable.sql"</args>
            <failExitCodeAbove>0</failExitCodeAbove>
          </RunExecutableWithExitCode>
        </Method>
      </Request>

      <!-- Migration of Previous Historical Data-->
      <Request Name="MigratePreV8HistoricalData" EstTime="120000" TimeOut="9000000" UIName="#ENS_UpgradeMigratePreviousHistData" ProgressBar="Animation"
               ActionOnFail="Stop" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <globalAction>Upgrade</globalAction>
        </ConditionTrue>
        <Method>
          <RunExecutableWithExitCode Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_UpgradeMigrateFailed"
                                     ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <cmd>sqlcmd.exe</cmd>
            <args>-b -S @globalEEMDbServer/@ -E -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\MigratePreV8HistoricalData.sql"</args>
            <failExitCodeAbove>0</failExitCodeAbove>
          </RunExecutableWithExitCode>
        </Method>
      </Request>

      <!--VC Redistributable Preregs-->
      <Request Name="InstallVCRedist32bit" EstTime="500" TimeOut="0" UIName="#ENS_Installing32bitVCRedist" ProgressBar="Animation" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>false</globalIsx64>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>"@globalSetupPath/@\SetupSupport\VCRedistributable\vcredist_x86.exe"</cmd>
            <args>/q</args>
          </RunExecutable>
        </Method>
      </Request>
      <Request Name="InstallPLScadaVCRedist32bit" EstTime="500" TimeOut="0" UIName="#ENS_Installing32bitVCRedist" ProgressBar="Animation" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>"@globalSetupPath/@\SetupSupport\VCRedistributable\vcredist_x86.exe"</cmd>
            <args>/q</args>
          </RunExecutable>
        </Method>
      </Request>
      <Request Name="InstallVCRedist64bit" EstTime="500" TimeOut="0" UIName="#ENS_Installing64bitVCRedist" ProgressBar="Animation" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>true</globalIsx64>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>"@globalSetupPath/@\SetupSupport\VCRedistributable\vcredist_x64.exe"</cmd>
            <args>/q</args>
          </RunExecutable>
        </Method>
      </Request>

      <!--Advosol Prereqs-->
      <Request Name="InstallAdvosolOpcCoreComponents" EstTime="500" TimeOut="0" UIName="#ENS_InstallingOPCCoreComponents" ProgressBar="Animation" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>"@globalSetupPath/@\SetupSupport\AdvosolOpcCoreComponents\AdvosolOpcCoreComponents.exe"</cmd>
            <args></args>
          </RunExecutable>
        </Method>
      </Request>

      <!--Ensure SQL CLR is enabled-->
      <Request Name="EnableSQLCLR" EstTime="500" TimeOut="120000" UIName="#ENS_EnablingSQLCLR" ProgressBar="Animation" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <EnableCLR  Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" />
        </Method>
      </Request>

      <!--Shared Module install-->
      <Request Name="RegisterAPMInstallRoot" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringInstallRoot" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <AddStringToRegistry  Library="RegistrySetup" Class="Installer.InstallTools.SetupRegistry">
            <key>@Custom_ESolutionsRegistryLocation</key>
            <name>InstallRoot</name>
            <value>@globalProgramFileFolder</value>
          </AddStringToRegistry >
        </Method>
      </Request>

      <Request Name="CreateAPMWindowsGroups" EstTime="500" TimeOut="100000" UIName="#ENS_CreatingWindowsGroups" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <CreateWindowsGroup Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <groupName>ENMAdmin</groupName>
            <groupDesc>ENM Admin Group</groupDesc>
            <userLevel>1</userLevel>
          </CreateWindowsGroup>
          <CreateWindowsGroup Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <groupName>ENMControl</groupName>
            <groupDesc>ENM Control Group</groupDesc>
            <userLevel>1</userLevel>
          </CreateWindowsGroup>
          <CreateWindowsGroup Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <groupName>ENMUser</groupName>
            <groupDesc>ENM User Group</groupDesc>
            <userLevel>1</userLevel>
          </CreateWindowsGroup>

          <AddUsertoGroup Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <groupName>ENMAdmin</groupName>
            <userName>@globalUserName2</userName>
          </AddUsertoGroup>

        </Method>
      </Request>

      <Request Name="AddENSUser" EstTime="500" TimeOut="100000" UIName="#ENS_AddingENSUser" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <AddENSUser Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" />
        </Method>
      </Request>

      <Request Name="InstallLPADbScripts" EstTime="500" TimeOut="100000" UIName="#ENS_InstallingLPADBScripts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <!--PLES_LPM_System.sql-->
          <ExecuteSQLScriptFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\DatabaseScripts\PLES_LPM_System.sql</sqlFilePath>
            <assemblyPath>@globalProgramFileFolder/@\Common\</assemblyPath>
          </ExecuteSQLScriptFile>
        </Method>
      </Request>

      <Request Name="InstallDiagnosticsDbScripts" EstTime="500" TimeOut="100000" UIName="#ENS_InstallingDiagnosticsDBScripts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <!--PLES_Logging.sql-->
          <ExecuteSQLScriptFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\DatabaseScripts\PLES_Logging.sql</sqlFilePath>
            <assemblyPath>@globalProgramFileFolder/@\Common\</assemblyPath>
          </ExecuteSQLScriptFile>
        </Method>
      </Request>

      <Request Name="SetDiagnosticsDbOwner" EstTime="500" TimeOut="100000" UIName="#ENS_SettingDiagnosticsDbOwner" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <ChangeDBOwner Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL">
            <userName>ENS</userName>
            <dbName>PLES_Logging</dbName>
          </ChangeDBOwner>
        </Method>
      </Request>

      <!--OPC Logger Module install-->
      <Request Name="RegisterOPCLogger" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringOPCLogger" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>
          <RegisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorRegisteringOPCLogger">
            <regPath>@Custom_ESolutionsRegistryLocation/@</regPath>
            <moduleName>OPC Logger</moduleName>
            <productFamily>eSolutionsWeb</productFamily>
            <description>OPC Logger</description>
            <assemblyFile>@globalProgramFileFolder/@\OPC Logger\OPCAELoggerSvc.exe</assemblyFile>
          </RegisterModule>
        </Method>
      </Request>

      <Request Name="InstallOPCLoggerDbScripts" EstTime="500" TimeOut="2000000" UIName="#ENS_InstallingOPCLoggerDBScripts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <!--PLES_AEHistory.sql-->
          <ExecuteSQLScriptFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\DatabaseScripts\PLES_AEHistory.sql</sqlFilePath>
            <assemblyPath>@globalProgramFileFolder/@\Common\</assemblyPath>
          </ExecuteSQLScriptFile>
        </Method>
      </Request>

      <Request Name="SetOPCLoggerDbOwner" EstTime="500" TimeOut="2000000" UIName="#ENS_SettingOPCLoggerDbOwner" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <ChangeDBOwner Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL">
            <userName>ENS</userName>
            <dbName>PLES_AEHistory</dbName>
          </ChangeDBOwner>
        </Method>
      </Request>

      <Request Name="SetOPCLoggerConnString" EstTime="500" TimeOut="100000" UIName="#ENS_SettingOPCLoggerConnectionStrings" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\OPC Logger\OPCAELoggerSvc.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\OPC Logger\PLLog.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>

      <Request Name="RegisterOPCLoggerServiceWithOPCLogger" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringOPCLoggerServiceWithOPCLogger" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>
          <RegisterSeviceWithOPCLogger Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ServiceController" UIMessageOnFail="#ENS_ErrorRegisteringService">
            <regPath>@Custom_ESolutionsRegistryLocation/@\OPC Logger</regPath>
            <machine>127.0.0.1</machine>
            <serviceName>PLOpcAELogger</serviceName>
            <url>tcp://127.0.0.1:1210/Logger.tcp</url>
            <isService>true</isService>
            <restartBusinessObjectOnTimeout>false</restartBusinessObjectOnTimeout>
            <restartAppOnTimeOut>false</restartAppOnTimeOut>
          </RegisterSeviceWithOPCLogger>
        </Method>
      </Request>

      <Request Name="RegisterOPCLoggerService" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringOPCLoggerService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/Account=LocalSystem /ServiceHostInstanceName=PLOpcAELogger /i "@globalProgramFileFolder/@\OPC Logger\OPCAELoggerSvc.exe"</args>
          </RunExecutable>
          <CheckWindowServiceExisting Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ServiceCouldNotBeRegistered">
            <serviceName>PLOpcAELogger</serviceName>
            <machineName>localhost</machineName>
          </CheckWindowServiceExisting>
          <StartServiceWithTimeout Library="NTServiceUtility" Class="Installer.InstallTools.NTServiceController">
            <displayServiceName>PLOpcAELogger</displayServiceName>
            <timeout>300</timeout>
          </StartServiceWithTimeout>
        </Method>
      </Request>


      <!--Notification Module install-->

      <!-- Creates ENM Registry Keys on the Database Server
           This was added in order to account for schema changes in the database for ENM 8.0 - so older versions of SER 
           would install but not overwrite new ENM features.  It uses the PowerLogic.eSolutions.Shared.SQL.dll for version information. -->
      <Request Name="RegisterAPMonDBServer" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringENSonDbServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RegisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorRegisteringENS">
            <regPath>@Custom_ESolutionsRegistryLocation/@</regPath>
            <moduleName>APM</moduleName>
            <productFamily>eSolutionsWeb</productFamily>
            <description>Event Notification Database</description>
            <!-- using a shared assembly because the apm.dll is remote - this assembly should register -->
            <assemblyFile>@globalProgramFileFolder/@\Common\PowerLogic.eSolutions.Shared.SQL.dll</assemblyFile>
          </RegisterModule>
        </Method>
      </Request>

      <!-- Creates ENM Registry Keys based on the version of the APM.dll -->
      <Request Name="RegisterAPM" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringENS" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RegisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorRegisteringENS">
            <regPath>@Custom_ESolutionsRegistryLocation/@</regPath>
            <moduleName>APM</moduleName>
            <productFamily>eSolutionsWeb</productFamily>
            <description>Event Notification</description>
            <assemblyFile>@globalProgramFileFolder/@\EventNotification\apm.dll</assemblyFile>
          </RegisterModule>
        </Method>
      </Request>

      <!-- Installs the PLES_APM Database -->
      <Request Name="InstallApmDbScripts" EstTime="500" TimeOut="100000" UIName="#ENS_InstallingENSDBScripts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <!--PLES_APM.sql-->
          <ExecuteSQLScriptFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\DatabaseScripts\PLES_APM.sql</sqlFilePath>
            <assemblyPath></assemblyPath>
          </ExecuteSQLScriptFile>
        </Method>
      </Request>

      <!-- Creates the ENS user for PLES_APM Database -->
      <Request Name="SetENSDbOwner" EstTime="500" TimeOut="100000" UIName="#ENS_SettingENSDbOwner" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <ChangeDBOwner Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL">
            <userName>ENS</userName>
            <dbName>PLES_APM</dbName>
          </ChangeDBOwner>
        </Method>
      </Request>

      <Request Name="SetAPMConnString" EstTime="500" TimeOut="100000" UIName="#ENS_SettingENSConnectionStrings" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\EventNotification\APMService.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>


      <Request Name="RegisterAPMWithOPCLogger" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringENSWithOPCLogger" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RegisterSeviceWithOPCLogger Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ServiceController" UIMessageOnFail="#ENS_ErrorRegisteringService">
            <regPath>@Custom_ESolutionsRegistryLocation/@\OPC Logger</regPath>
            <machine>127.0.0.1</machine>
            <serviceName>PLActivePagerModule</serviceName>
            <url>tcp://127.0.0.1:63387/apm.tcp</url>
            <isService>true</isService>
            <restartBusinessObjectOnTimeout>false</restartBusinessObjectOnTimeout>
            <restartAppOnTimeOut>false</restartAppOnTimeOut>
          </RegisterSeviceWithOPCLogger>
        </Method>
      </Request>

      <Request Name="RegisterNotificationCOMComponents" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringNotificationCOMComponents" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <!--ASmsCtrl.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorRegisteringASmsCtrl">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/s "@globalProgramFileFolder/@\EventNotification\ASmsCtrl.dll"</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="RegisterSNMPCOMComponents" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringSNMPCOMComponents" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <!--ASocket.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorRegisteringASocket">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/s "@globalProgramFileFolder/@\EventNotification\ASocket.dll"</args>
          </RunExecutable>

          <!--ASocketx64.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorRegisteringASocketx64">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/s "@globalProgramFileFolder/@\EventNotification\ASocketx64.dll"</args>
          </RunExecutable>

          <!--AxMmCtl.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorRegisteringAxMmCtl">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/s "@globalProgramFileFolder/@\EventNotification\AxMmCtl.dll"</args>
          </RunExecutable>

          <!--AxMmCtlx64.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorRegisteringAxMmCtlx64">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/s "@globalProgramFileFolder/@\EventNotification\AxMmCtlx64.dll"</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="RegisterAPMService" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringENSService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/Account=LocalSystem /ServiceHostInstanceName=ActivePagerModule /i "@globalProgramFileFolder/@\EventNotification\APMService.exe"</args>
          </RunExecutable>
          <CheckWindowServiceExisting Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ServiceCouldNotBeRegistered">
            <serviceName>ActivePagerModule</serviceName>
            <machineName>localhost</machineName>
          </CheckWindowServiceExisting>
          <StartServiceWithTimeout Library="NTServiceUtility" Class="Installer.InstallTools.NTServiceController">
            <displayServiceName>ActivePagerModule</displayServiceName>
            <timeout>300</timeout>
          </StartServiceWithTimeout>
          <!-- <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>sc</cmd>
            <args>config "ActivePagerModule" depend= @globalSQLServiceName/@</args>
          </RunExecutable> -->
        </Method>
      </Request>


      <!--DB Maintenance Module install-->
      <Request Name="ScheduleDbMaintenanceTasks" EstTime="500" TimeOut="100000" UIName="#ENS_DatabaseMaintenanceJobInstallation" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>


          <!-- ExpressMaint stored procedure-->

          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <ExecuteSQLScriptFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\DatabaseScripts\ExpressMaint.sql</sqlFilePath>
            <assemblyPath>@globalProgramFileFolder/@\Common\</assemblyPath>
          </ExecuteSQLScriptFile>

          <!--Full DB Backup-->
          <CreateDailyTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask">
            <taskName>Full DB Backup</taskName>
            <commandToRun>sqlcmd.exe -S @globalEEMDbServer/@ -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\FullDatabaseBackup.sql"</commandToRun>
            <timeToRun>22:00:00</timeToRun>
            <endDate></endDate>
            <taskUser>@globalUserName2</taskUser>
            <taskUserPassword>@globalUserPassword2</taskUserPassword>
            <asyncExecution>false</asyncExecution>
          </CreateDailyTask>

          <!--Rebuildindex-->
          <CreateDailyTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask">
            <taskName>Rebuildindex</taskName>
            <commandToRun>sqlcmd.exe -S @globalEEMDbServer/@ -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\Rebuildindex.sql"</commandToRun>
            <timeToRun>04:30:00</timeToRun>
            <endDate></endDate>
            <taskUser>@globalUserName2</taskUser>
            <taskUserPassword>@globalUserPassword2</taskUserPassword>
            <asyncExecution>false</asyncExecution>
          </CreateDailyTask>

          <!--ReorgIndex-->
          <CreateDailyTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask">
            <taskName>ReorgIndex</taskName>
            <commandToRun>sqlcmd.exe -S @globalEEMDbServer/@ -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\ReorgIndex.sql"</commandToRun>
            <timeToRun>05:30:00</timeToRun>
            <endDate></endDate>
            <taskUser>@globalUserName2</taskUser>
            <taskUserPassword>@globalUserPassword2</taskUserPassword>
            <asyncExecution>false</asyncExecution>
          </CreateDailyTask>

          <!--TrimDiagnosticLogTable-->
          <CreateDailyTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask">
            <taskName>TrimDiagnosticLogTable</taskName>
            <commandToRun>sqlcmd.exe -S @globalEEMDbServer/@ -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\TrimDiagnosticLogTable.sql"</commandToRun>
            <timeToRun>02:00:00</timeToRun>
            <endDate></endDate>
            <taskUser>@globalUserName2</taskUser>
            <taskUserPassword>@globalUserPassword2</taskUserPassword>
            <asyncExecution>false</asyncExecution>
          </CreateDailyTask>

          <!--TrimEventsTable-->
          <CreateDailyTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask">
            <taskName>TrimEventsTable</taskName>
            <commandToRun>sqlcmd.exe -S @globalEEMDbServer/@ -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\TrimEventsTable.sql"</commandToRun>
            <timeToRun>01:00:00</timeToRun>
            <endDate></endDate>
            <taskUser>@globalUserName2</taskUser>
            <taskUserPassword>@globalUserPassword2</taskUserPassword>
            <asyncExecution>false</asyncExecution>
          </CreateDailyTask>
        </Method>
      </Request>

      <Request Name="InstallDBMaintScript" EstTime="500" TimeOut="2000000" UIName="#ENS_DBBackupLocationSetup" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#Couldntrunexe">
            <cmd>sqlcmd.exe</cmd>
            <args>-S @globalEEMDbServer/@ -E -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\DatabaseBackupSetup.sql"</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="DatabaseBackupUpdated" EstTime="500" TimeOut="2000000" UIName="#ENS_DBBackupLocationUpdated" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#Couldntrunexe">
            <cmd>sqlcmd.exe</cmd>
            <args>-S @globalEEMDbServer/@ -E -i "@globalProgramFileFolder/@\DBMaintenance\Scripts\DatabaseBackupLocation.sql"  -v DatabaseName="PLES_Logging" -v BackupLocation="@globalDatabaseBackupFolder/@"</args>
          </RunExecutable>
        </Method>
      </Request>

      <!-- Needed request for permissions to Databasebackupfolder - otherwise SQL Server wont have permissions to backup databases-->
      <Request Name="DatabaseBackupPermissions" EstTime="500" TimeOut="100000" UIName="#ENS_DBBackupLocationPermissions" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetServicePermissions Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.DBMaintUtil" UIMessageOnFail="#Couldntrunexe">
            <serviceName>@globalSQLServiceName/@</serviceName>
            <folderLocation>@globalDatabaseBackupFolder/@</folderLocation>
          </SetServicePermissions>
        </Method>
      </Request>


      <!--Alarm Sentry Module install-->
      <Request Name="RegisterAlarmSentry" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RegisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorRegisteringAlarmSentry">
            <regPath>@Custom_ESolutionsRegistryLocation/@</regPath>
            <moduleName>AS</moduleName>
            <productFamily>eSolutionsWeb</productFamily>
            <description>Alarm Sentry</description>
            <assemblyFile>@globalProgramFileFolder/@\AlarmGen\NSPlugin.dll</assemblyFile>
          </RegisterModule>
        </Method>
      </Request>

      <Request Name="RegisterWCF" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringWCF" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotRegisterWCF">
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\ServiceModelReg.exe</cmd>
            <args>-i</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="InstallAlarmSentryDbScripts" EstTime="500" TimeOut="100000" UIName="#ENS_InstallingAlarmSentryDBScripts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <!--PLES_TAG.sql-->
          <ExecuteSQLScriptFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\DatabaseScripts\PLES_TAG.sql</sqlFilePath>
            <assemblyPath>@globalProgramFileFolder/@\Common\</assemblyPath>
          </ExecuteSQLScriptFile>
        </Method>
      </Request>

      <Request Name="SetAlarmSentryDbOwner" EstTime="500" TimeOut="100000" UIName="#ENS_SettingAlarmSentryDbOwner" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <ChangeDBOwner Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL">
            <userName>ENS</userName>
            <dbName>PLES_TAG</dbName>
          </ChangeDBOwner>
        </Method>
      </Request>

      <Request Name="CreateIONEStoredProc" EstTime="500" TimeOut="100000" UIName="#ENS_CreatingIONEAlarmSentryStoredProc" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_Solution_IsIonEnterpriseInstalled>true</Custom_Solution_IsIonEnterpriseInstalled>
        </ConditionTrue>
        <Method>
          <!--Execute script on IONE database instance-->
          <SetIONConnectionString Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ConfigureIONSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <ionDbRegKeys>SOFTWARE\Schneider Electric\ION Enterprise\@Custom_IONVersionNumber/@\\Databases</ionDbRegKeys>
            <ionRegistryView>Registry32</ionRegistryView>
            <enmRegistryPath>@Custom_ESolutionsRegistryLocation/@\SPM</enmRegistryPath>
          </SetIONConnectionString>

          <!--DatabasesTAGCreateIONProc.sql-->
          <ExecuteSQLScriptFile Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ConfigureIONSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\\DatabaseScripts\DatabasesTAGCreateIONProc.sql</sqlFilePath>
            <assemblyPath></assemblyPath>
          </ExecuteSQLScriptFile>
        </Method>
      </Request>

      <Request Name="CreateUserAlarmSentryIONEEvents32bit" EstTime="500" TimeOut="100000" UIName="#ENS_CreatingIONEEUserForAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_Solution_IsIonEnterpriseInstalled>true</Custom_Solution_IsIonEnterpriseInstalled>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <CreateProductLogin Library="Security.Configuration" Class="Security.Configuration.ProductLoginHelper" UIMessageOnFail="#CreateMaintenanceProductLoginFailed">
            <connectionString>@globalConnectionString</connectionString>
            <name>ENS</name>
            <phrase>x</phrase>
            <!-- login already exists -->
            <databaseAuthenticationType>Sql</databaseAuthenticationType>
            <databases>ION_Data,ION_Network,ION_SystemLog</databases>
            <roles>db_datareader,db_datawriter,db_ddladmin,enm_alarmsentry_exec</roles>
          </CreateProductLogin>
        </Method>
      </Request>
      <Request Name="CreateUserAlarmSentryIONEEvents64bit" EstTime="500" TimeOut="100000" UIName="#ENS_CreatingIONEEUserForAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_Solution_IsIonEnterpriseInstalled>true</Custom_Solution_IsIonEnterpriseInstalled>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <CreateProductLogin Library="Security.Configuration" Class="Security.Configuration.ProductLoginHelper" UIMessageOnFail="#CreateMaintenanceProductLoginFailed">
            <connectionString>@globalConnectionString</connectionString>
            <name>ENS</name>
            <phrase>x</phrase>
            <!-- login already exists -->
            <databaseAuthenticationType>Sql</databaseAuthenticationType>
            <databases>ION_Data,ION_Network,ION_SystemLog</databases>
            <roles>db_datareader,db_datawriter,db_ddladmin,enm_alarmsentry_exec</roles>
          </CreateProductLogin>
        </Method>
      </Request>

      <Request Name="EnableAlarmSentryIONEEvents32bit" EstTime="500" TimeOut="100000" UIName="#ENS_EnablingIONEEventsInAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsIonEnterpriseInstalled>true</Custom_Solution_IsIonEnterpriseInstalled>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <!--Write IONE connection string to Alarm Sentry config file-->
          <WriteIONConnectionStringToAEServerConfig Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.AlarmSentryManager" UIMessageOnFail="#ENS_ErrorWritingIONEConnectionStringsToAlarmSentry" >
            <danSrvConfigInstallPath>@globalProgramFileFolder/@\AlarmGen\DanSrvAe32.exe.config</danSrvConfigInstallPath>
            <ionDbRegKeys>SOFTWARE\Schneider Electric\ION Enterprise\@Custom_IONVersionNumber/@\\Databases</ionDbRegKeys>
            <ionRegistryView>Registry32</ionRegistryView>
          </WriteIONConnectionStringToAEServerConfig>
        </Method>
      </Request>

      <Request Name="EnableAlarmSentryIONEEvents64bit" EstTime="500" TimeOut="100000" UIName="#ENS_EnablingIONEEventsInAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsIonEnterpriseInstalled>true</Custom_Solution_IsIonEnterpriseInstalled>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <!--Write IONE connection string to Alarm Sentry config file-->
          <WriteIONConnectionStringToAEServerConfig Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.AlarmSentryManager" UIMessageOnFail="#ENS_ErrorWritingIONEConnectionStringsToAlarmSentry" >
            <danSrvConfigInstallPath>@globalProgramFileFolder/@\AlarmGen\DanSrvAe64.exe.config</danSrvConfigInstallPath>
            <ionDbRegKeys>SOFTWARE\Schneider Electric\ION Enterprise\@Custom_IONVersionNumber/@\\Databases</ionDbRegKeys>
            <ionRegistryView>Registry32</ionRegistryView>
          </WriteIONConnectionStringToAEServerConfig>
        </Method>
      </Request>

      <Request Name="DisableAlarmSentryIONEEvents32bit" EstTime="500" TimeOut="100000" UIName="#ENS_DisablingIONEEventsInAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsIonEnterpriseInstalled>false</Custom_Solution_IsIonEnterpriseInstalled>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <DisableIONEventCheckingOnAEServer Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.AlarmSentryManager">
            <danSrvConfigInstallPath>@globalProgramFileFolder/@\AlarmGen\DanSrvAe32.exe.config</danSrvConfigInstallPath>
          </DisableIONEventCheckingOnAEServer>
        </Method>
      </Request>
      <Request Name="DisableAlarmSentryIONEEvents64bit" EstTime="500" TimeOut="100000" UIName="#ENS_DisablingIONEEventsInAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsIonEnterpriseInstalled>false</Custom_Solution_IsIonEnterpriseInstalled>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <DisableIONEventCheckingOnAEServer Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.AlarmSentryManager">
            <danSrvConfigInstallPath>@globalProgramFileFolder/@\AlarmGen\DanSrvAe64.exe.config</danSrvConfigInstallPath>
          </DisableIONEventCheckingOnAEServer>
        </Method>
      </Request>

      <Request Name="SetAlarmSentryConnString" EstTime="500" TimeOut="100000" UIName="#ENS_SettingAlarmSentryConnectionStrings" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\Websites\AlarmGenUI\Web.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\Websites\AlarmGenUI\Services\PLAlarmGen.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>

      <Request Name="SetAlarmSentryAEServerConnString32bit" EstTime="500" TimeOut="100000" UIName="#ENS_SettingAlarmSentryAEServerConnectionString" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\AlarmGen\DANSrvAE32.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER;IONE</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>
      <Request Name="SetAlarmSentryAEServerConnString64bit" EstTime="500" TimeOut="100000" UIName="#ENS_SettingAlarmSentryAEServerConnectionString" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\AlarmGen\DANSrvAE64.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER;IONE</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>

      <Request Name="OpenAlarmSentryFirewallPorts" EstTime="500" TimeOut="100000" UIName="#ENS_OpeningAlarmSentryFirewallPorts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <!--Open port 7896-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotOpenFirewallPort">
            <cmd>netsh</cmd>
            <args>firewall set portopening tcp 7896 PLES_PORT_7896 ENABLE "ALL"</args>
          </RunExecutable>

          <!--Open port 7897-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotOpenFirewallPort">
            <cmd>netsh</cmd>
            <args>firewall set portopening tcp 7897 PLES_PORT_7897 ENABLE "ALL"</args>
          </RunExecutable>

          <!--Open port 81-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotOpenFirewallPort">
            <cmd>netsh</cmd>
            <args>firewall set portopening tcp 81 PLES_PORT_81 ENABLE "ALL"</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="RegisterAlarmSentryOPCServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringAlarmSentryOPCServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\AlarmGen\DanSrvAE32.exe</cmd>
            <args>/regserver</args>
          </RunExecutable>
        </Method>
      </Request>
      <Request Name="RegisterAlarmSentryOPCServer64bit" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringAlarmSentryOPCServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\AlarmGen\DanSrvAE64.exe</cmd>
            <args>/regserver</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="RegisterAlarmSentryService" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringAlarmSentryService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/Account=LocalSystem /ServiceHostInstanceName=PLAlarmGenHS /i "@globalProgramFileFolder/@\Websites\AlarmGenUI\Services\PLAlarmGen.exe"</args>
          </RunExecutable>
          <CheckWindowServiceExisting Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ServiceCouldNotBeRegistered">
            <serviceName>PLAlarmGenHS</serviceName>
            <machineName>localhost</machineName>
          </CheckWindowServiceExisting>
          <StartServiceWithTimeout Library="NTServiceUtility" Class="Installer.InstallTools.NTServiceController">
            <displayServiceName>PLAlarmGenHS</displayServiceName>
            <timeout>300</timeout>
          </StartServiceWithTimeout>

        </Method>
      </Request>

      <!-- Install the Service Manager -->
      <Request Name="RegisterServiceManager" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringServiceManager" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\Services\ServiceManager.exe</cmd>
            <args>install</args>
          </RunExecutable>
          <CheckWindowServiceExisting Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ServiceCouldNotBeRegistered">
            <serviceName>SEServerManagerHost</serviceName>
            <machineName>localhost</machineName>
          </CheckWindowServiceExisting>
          <StartServiceWithTimeout Library="NTServiceUtility" Class="Installer.InstallTools.NTServiceController">
            <displayServiceName>SE Server Manager Host</displayServiceName>
            <timeout>300</timeout>
          </StartServiceWithTimeout>

        </Method>
      </Request>

      <!-- IIS Pre-Reqs -->
      <!-- Using DISM.exe for new Operating systems-->
      <Request Name="InstallIISWin8Server2012" EstTime="800" TimeOut="1800000" UIName="#ConfigureWindowsIISRole" ProgressBar="Progress" ActionOnFail="Continue">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalOSType>Windows8|WindowsServer2012</globalOSType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutableOn64bitOS Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>DISM.exe</cmd>
            <args>/Online /Enable-Feature /FeatureName:IIS-ApplicationDevelopment /FeatureName:IIS-ASP /FeatureName:IIS-ASPNET /FeatureName:IIS-NetFxExtensibility45 /FeatureName:IIS-ASPNET45 /FeatureName:WAS-ConfigurationAPI /FeatureName:WCF-NonHTTP-Activation /FeatureName:WCF-HTTP-Activation /FeatureName:WCF-HTTP-Activation45  /FeatureName:IIS-WebServer /FeatureName:IIS-WebServerRole /FeatureName:WAS-ProcessModel /FeatureName:WAS-WindowsActivationService /FeatureName:WAS-NetFxEnvironment /FeatureName:IIS-RequestFiltering /FeatureName:IIS-Security /FeatureName:IIS-ISAPIFilter /FeatureName:IIS-ISAPIExtensions /FeatureName:IIS-NetFxExtensibility /FeatureName:IIS-DefaultDocument /FeatureName:IIS-CommonHttpFeatures /FeatureName:IIS-StaticContent /FeatureName:IIS-WindowsAuthentication /NoRestart</args>
          </RunExecutableOn64bitOS>
          <!--Fix issue with Alarm Sentry not having required files from WCF-HTTP-Activation45-->
          <RunExecutableOn64bitOS Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>DISM.exe</cmd>
            <args>/Online /Disable-Feature /FeatureName:WCF-HTTP-Activation45 /NoRestart</args>
          </RunExecutableOn64bitOS>
          <RunExecutableOn64bitOS Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>DISM.exe</cmd>
            <args>/Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45 /NoRestart</args>
          </RunExecutableOn64bitOS>
        </Method>
      </Request>
      <Request Name="InstallIISWin8Server2012x86" EstTime="800" TimeOut="1800000" UIName="#ConfigureWindowsIISRole" ProgressBar="Progress" ActionOnFail="Continue">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalOSType>Windows8|WindowsServer2012</globalOSType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutableWithReturn Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>DISM.exe</cmd>
            <args>/Online /Enable-Feature /FeatureName:IIS-ApplicationDevelopment /FeatureName:IIS-ASP /FeatureName:IIS-ASPNET /FeatureName:IIS-NetFxExtensibility45 /FeatureName:IIS-ASPNET45 /FeatureName:WAS-ConfigurationAPI /FeatureName:WCF-NonHTTP-Activation /FeatureName:WCF-HTTP-Activation /FeatureName:WCF-HTTP-Activation45  /FeatureName:IIS-WebServer /FeatureName:IIS-WebServerRole /FeatureName:WAS-ProcessModel /FeatureName:WAS-WindowsActivationService /FeatureName:WAS-NetFxEnvironment /FeatureName:IIS-RequestFiltering /FeatureName:IIS-Security /FeatureName:IIS-ISAPIFilter /FeatureName:IIS-ISAPIExtensions /FeatureName:IIS-NetFxExtensibility /FeatureName:IIS-DefaultDocument /FeatureName:IIS-CommonHttpFeatures /FeatureName:IIS-StaticContent /FeatureName:IIS-WindowsAuthentication /NoRestart</args>
          </RunExecutableWithReturn>
          <!--Fix issue with Alarm Sentry not having required files from WCF-HTTP-Activation45-->
          <RunExecutableWithReturn Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>DISM.exe</cmd>
            <args>/Online /Disable-Feature /FeatureName:WCF-HTTP-Activation45 /NoRestart</args>
          </RunExecutableWithReturn>
          <RunExecutableWithReturn Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>DISM.exe</cmd>
            <args>/Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45 /NoRestart</args>
          </RunExecutableWithReturn>
        </Method>
      </Request>

      <!--Continue using pkgmgr for previous support Operating Systems-->
      <Request Name="InstallIISWin7Server2008" EstTime="500" TimeOut="1200000" UIName="#ConfigureWindowsIISRole" ProgressBar="Animation" ActionOnFail="Continue">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalOSType>Windows7|WindowsServer2008R2|WindowsServer2008</globalOSType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutableOn64bitOS Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>pkgmgr</cmd>
            <args>/iu:IIS-ASPNET;IIS-ApplicationDevelopment;IIS-WebServer;IIS-WebServerRole;WAS-ProcessModel;WAS-WindowsActivationService;WAS-NetFxEnvironment;IIS-RequestFiltering;IIS-Security;IIS-ISAPIFilter;IIS-ISAPIExtensions;IIS-NetFxExtensibility;IIS-DefaultDocument;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-WindowsAuthentication </args>
          </RunExecutableOn64bitOS>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe</cmd>
            <args>-iru</args>
          </RunExecutable>
        </Method>
      </Request>
      <Request Name="InstallIISWin7Server2008x86" EstTime="500" TimeOut="1200000" UIName="#ConfigureWindowsIISRole" ProgressBar="Animation" ActionOnFail="Continue">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalOSType>Windows7|WindowsServer2008R2|WindowsServer2008</globalOSType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutableWithReturn Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>%systemroot%\system32\pkgmgr.exe</cmd>
            <args>/iu:IIS-ASPNET;IIS-ApplicationDevelopment;IIS-WebServer;IIS-WebServerRole;WAS-ProcessModel;WAS-WindowsActivationService;WAS-NetFxEnvironment;IIS-RequestFiltering;IIS-Security;IIS-ISAPIFilter;IIS-ISAPIExtensions;IIS-NetFxExtensibility;IIS-DefaultDocument;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-WindowsAuthentication </args>
          </RunExecutableWithReturn>
          <RunExecutableWithReturn Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe</cmd>
            <args>-iru</args>
          </RunExecutableWithReturn>
        </Method>
      </Request>

      <!--Create ENM and Alarm Sentry Website-->
      <Request Name="CreateENMWebsite" EstTime="500" TimeOut="0" UIName="#ENS_CreatingWebsite" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>

          <CreateWebSite Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.WebSiteManager" UIMessageOnFail="#ENS_ErrorCreatingWebsite"  ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <webSiteName>EnmConfig</webSiteName>
            <ip></ip>
            <port>82</port>
            <hostHeader></hostHeader>
            <path>@globalProgramFileFolder/@\Websites\EnmConfig</path>
            <indexPage></indexPage>
            <appPoolName>ENMSolutionsPool</appPoolName>
            <integratedMode>true</integratedMode>
            <appStartMenuDir>Schneider Electric\StruxureWare Solutions</appStartMenuDir>
            <shortcutName>ENM Configuration</shortcutName>
            <iconPath>@globalProgramFileFolder/@\Websites\EnmConfig\Content\images\EnmConfigIcon.ico</iconPath>
            <mimeTypes>.woff;application/x-font-woff</mimeTypes>
            <isBinFolderApp>false</isBinFolderApp>
          </CreateWebSite>

          <CreateWebSite Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.WebSiteManager" UIMessageOnFail="#ENS_ErrorCreatingWebsite"  ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <webSiteName>AlarmSentry</webSiteName>
            <ip></ip>
            <port>83</port>
            <hostHeader></hostHeader>
            <path>@globalProgramFileFolder/@\Websites\AlarmGenUI</path>
            <indexPage>Default.aspx</indexPage>
            <appPoolName>ENMSolutionsPool</appPoolName>
            <integratedMode>false</integratedMode>
            <appStartMenuDir>Schneider Electric\StruxureWare Solutions</appStartMenuDir>
            <shortcutName>Alarm Sentry</shortcutName>
            <iconPath>@globalProgramFileFolder/@\Websites\MonDiagSpa\Content\images\AlarmSentryIcon.ico</iconPath>
            <mimeTypes></mimeTypes>
            <isBinFolderApp>false</isBinFolderApp>
          </CreateWebSite>

        </Method>
      </Request>

      <!--Create M&D Website-->
      <Request Name="CreateMandDWebsite" EstTime="500" TimeOut="0" UIName="#ENS_CreatingMandDWebsite" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>

          <CreateWebSite Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.WebSiteManager" UIMessageOnFail="#ENS_ErrorCreatingWebsite"  ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <webSiteName>MonDiagSpa</webSiteName>
            <ip></ip>
            <port>85</port>
            <hostHeader></hostHeader>
            <path>@globalProgramFileFolder/@\Websites\MonDiagSpa</path>
            <indexPage></indexPage>
            <appPoolName>ENMSolutionsPool</appPoolName>
            <integratedMode>true</integratedMode>
            <appStartMenuDir>Schneider Electric\StruxureWare Solutions</appStartMenuDir>
            <shortcutName>Monitoring and Diagnostics</shortcutName>
            <iconPath>@globalProgramFileFolder/@\Websites\MonDiagSpa\Content\images\MandDIcon.ico</iconPath>
            <mimeTypes>.woff;application/x-font-woff</mimeTypes>
            <isBinFolderApp>false</isBinFolderApp>
          </CreateWebSite>

        </Method>
      </Request>

      <Request Name="SetWebConfigConnStr" EstTime="500" TimeOut="100000" UIName="#ENS_SettingWebsiteConnectionStrings" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\Websites\EnmConfig\Web.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\Websites\AlarmGenUI\Web.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\Websites\MonDiagSpa\Web.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>


      <Request Name="RestartStateService" EstTime="500" TimeOut="0" UIName="#ENSRestartingStateService" ProgressBar="Animation" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <StartServiceWithTimeout Library="NTServiceUtility" Class="Installer.InstallTools.NTServiceController">
            <displayServiceName>aspnet_state</displayServiceName>
            <timeout>300</timeout>
          </StartServiceWithTimeout>
        </Method>
      </Request>

      <Request Name="CreateServiceDependencies" EstTime="500" TimeOut="100000" UIName="#ENS_CreatingServiceDependencies" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>sc</cmd>
            <args>config "PLOpcAELogger" depend= @globalSQLServiceName/@</args>
          </RunExecutable>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>sc</cmd>
            <args>config "ActivePagerModule" depend= @globalSQLServiceName/@</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="AllowISAPICGI" EstTime="500" TimeOut="100000" UIName="#ConfigureISAPIandCGIrestrictio" ProgressBar="Progress" ActionOnFail="Prompt">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#CouldnotconfigureISAPICGIPermi">
            <cmd>%systemroot%\system32\inetsrv\AppCmd.exe</cmd>
            <args>set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'].allowed:True</args>
          </RunExecutable>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#CouldnotconfigureISAPICGIPermi">
            <cmd>%systemroot%\system32\inetsrv\AppCmd.exe</cmd>
            <args>set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'].allowed:True</args>
          </RunExecutable>
        </Method>
      </Request>


      <!--PLScada OPC Server Module install-->
      <Request Name="RegisterPLScadaOPCServer" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringPLScadaOPCAEServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <RegisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorRegisteringOPCServer">
            <regPath>@Custom_ESolutionsRegistryLocation/@</regPath>
            <moduleName>PLSCADAOPC</moduleName>
            <productFamily>eSolutionsWeb</productFamily>
            <description>PLSCADA OPC AE Server</description>
            <assemblyFile>@globalProgramFileFolder/@\PLSCADAOPC\NSPlugin.dll</assemblyFile>
          </RegisterModule>
        </Method>
      </Request>

      <Request Name="SetPLScadaConnString32bit" EstTime="500" TimeOut="100000" UIName="#ENS_SettingPLScadaConnectionStrings" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\PLSCADAOPC\DanSrvAe32.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>

      <Request Name="ConfigurePLScadaOPCServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_ConfiguringPLScadaOPCAEServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <SetCitectCredentials Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.CitectManager" UIMessageOnFail="#ENS_ErrorSettingAEServerCredentials" >
            <userName>@globalUserName1</userName>
            <password>@globalUserPassword1</password>
            <danSrvConfigInstallPath>@globalProgramFileFolder/@\PLSCADAOPC\DanSrvAe32.exe.config</danSrvConfigInstallPath>
          </SetCitectCredentials>
        </Method>
      </Request>

      <Request Name="RegisterPLScadaAEDCOMServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringPLScadaAEDCOMServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\PLSCADAOPC\DanSrvAE32.exe</cmd>
            <args>/regserver</args>
          </RunExecutable>
        </Method>
      </Request>


      <!-- Configure Power Scada Expert OPC -->
      <Request Name="SetPSEConnString32bit" EstTime="500" TimeOut="100000" UIName="#ENS_SettingPSEConnectionStrings" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\PSEOPCAE\DanSrvAe32.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
        </Method>
      </Request>

      <Request Name="ConfigurePSEOPCServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_ConfiguringPSEOPCAEServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <SetCitectCredentials Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.CitectManager" UIMessageOnFail="#ENS_ErrorSettingAEServerCredentials" >
            <userName>@globalUserName1</userName>
            <password>@globalUserPassword1</password>
            <danSrvConfigInstallPath>@globalProgramFileFolder/@\PSEOPCAE\DanSrvAe32.exe.config</danSrvConfigInstallPath>
          </SetCitectCredentials>
        </Method>
      </Request>

      <Request Name="RegisterPSEAEDCOMServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringPSEAEDCOMServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\PSEOPCAE\DanSrvAE32.exe</cmd>
            <args>/regserver</args>
          </RunExecutable>
        </Method>
      </Request>



      <!--Hot Standby Module install-->
      <Request Name="RegisterHotStandby" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringHotStandby" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <RegisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorRegisteringHotStandby">
            <regPath>@Custom_ESolutionsRegistryLocation/@</regPath>
            <moduleName>PLHotStandby</moduleName>
            <productFamily>eSolutionsWeb</productFamily>
            <description>PLHotStandby Server</description>
            <assemblyFile>@globalProgramFileFolder/@\HotStandby\Apm.Hotstandby.dll</assemblyFile>
          </RegisterModule>
        </Method>
      </Request>

      <Request Name="InstallHotStandbyDbScripts" EstTime="500" TimeOut="100000" UIName="#ENS_InstallingHotStandbyDBScripts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <ExecuteSQLScriptFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorInstallingScript">
            <sqlFilePath>@globalProgramFileFolder/@\DatabaseScripts\PLES_HotStandby.SQL</sqlFilePath>
            <assemblyPath></assemblyPath>
          </ExecuteSQLScriptFile>
        </Method>
      </Request>

      <Request Name="SetHotStandbyDbOwner" EstTime="500" TimeOut="100000" UIName="#ENS_SettingHotStandbyDbOwner" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <SetConnectionString Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>
          <ChangeDBOwner Library="DatabaseUtilities" Class="Installer.InstallTools.ConfigureSQL">
            <userName>ENS</userName>
            <dbName>PLES_HotStandby</dbName>
          </ChangeDBOwner>
        </Method>
      </Request>

      <Request Name="SetHotStandbyConnString" EstTime="500" TimeOut="100000" UIName="#ENS_SettingHotStandbyConnectionStrings" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\HotStandby\PlsHotStandbySvc.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
          <SetAllConnectionStringsInConfigFile  Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <configFile>@globalProgramFileFolder/@\HotStandby\HotStandbyCfg.exe.config</configFile>
            <connectionString>@globalConnectionString</connectionString>
            <exceptionList>LOCALSQLSERVER</exceptionList>
          </SetAllConnectionStringsInConfigFile>
          <SetConnectionStringInHibernateFile Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL">
            <hibernateFile>@globalProgramFileFolder/@\HotStandby\hibernate.cfg.xml</hibernateFile>
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionStringInHibernateFile>
        </Method>
      </Request>

      <Request Name="RegisterHotStandbyService" EstTime="500" TimeOut="100000" UIName="#ENS_RegisteringHotStandbyService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/Account=LocalSystem /ServiceHostInstanceName=PLHotStandbyService /i "@globalProgramFileFolder/@\HotStandby\PlsHotStandbySvc.exe"</args>
          </RunExecutable>
          <CheckWindowServiceExisting Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ServiceCouldNotBeRegistered">
            <serviceName>PLHotStandbyService</serviceName>
            <machineName>localhost</machineName>
          </CheckWindowServiceExisting>
          <StartServiceWithTimeout Library="NTServiceUtility" Class="Installer.InstallTools.NTServiceController">
            <displayServiceName>PLHotStandbyService</displayServiceName>
            <timeout>300</timeout>
          </StartServiceWithTimeout>
        </Method>
      </Request>

      <Request Name="ModifyUpgradeInstallInfo" EstTime="500" TimeOut="100000" UIName="#ENS_ModifyingUpgradeInfo" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalAction>Upgrade</globalAction>
        </ConditionTrue>
        <Method>
          <ModifyAttribute Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.XMLFileHelper" UIMessageOnFail="#ENS_ErrorModifyingInstallInfo"
                           ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <filePath>@globalProgramFileFolder/@\Uninst_EventNotificationModule\InstallInfo.xml</filePath>
            <menuGroup>InstallInfo</menuGroup>
            <menuItem>InstallGlobal</menuItem>
            <attributeName>globalAction</attributeName>
            <value>Install</value>
          </ModifyAttribute>
        </Method>
      </Request>

      <Request Name="UpdateAEHistorySchemaVersion" EstTime="500" TimeOut="100000" UIName="#ENS_UpdateHistorySchemaVersion" ProgressBar="Progress" ActionOnFail="Continue"
               ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <GetRegistryValue Library="RegistrySetup" Class="Installer.InstallTools.SetupRegistry" SetReturnProperty="ENM_Version" UIMessageOnFail="#ENS_UpdateHistSchemaRetrieveFailed"
                            ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <regPath>SOFTWARE\Schneider-Electric\PowerLogic eSolutions\OPC Logger</regPath>
            <keyValue>Version</keyValue>
          </GetRegistryValue>

          <SetConnectionString Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_ErrorSettingConnectionString"
                               ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <connectionString>@globalConnectionString</connectionString>
          </SetConnectionString>

          <UpdateDBSchemaVersion Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.ConfigureSQL" UIMessageOnFail="#ENS_UpdateHistSchemaSetFailed"
                                 ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <version>@ENM_Version</version>
            <schemaTableName>LG_SCHEMA_VERSION</schemaTableName>
            <dbName>PLES_AEHistory</dbName>
          </UpdateDBSchemaVersion>
        </Method>
      </Request>


      <!--Request to let SER know that ENM has been installed-->
      <Request Name="ModifySERInstallInfo" EstTime="500" TimeOut="100000" UIName="#ENS_ModifyingSERInstallInfo" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>true</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>true</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <ModifyAttribute Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.XMLFileHelper" UIMessageOnFail="#ENS_ErrorModifyingSERInstallInfo">
            <filePath>@globalProgramFileFolder/@\Uninst_SequenceEventsRecorder\InstallInfo.xml</filePath>
            <menuGroup>InstallInfo</menuGroup>
            <menuItem>InstallGlobal</menuItem>
            <attributeName>Custom_APMInstalled</attributeName>
            <value>true</value>
          </ModifyAttribute>
          <ModifyAttribute Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.XMLFileHelper" UIMessageOnFail="#ENS_ErrorModifyingSERInstallInfo">
            <filePath>@globalProgramFileFolder/@\Uninst_SequenceEventsRecorder\InstallInfo.xml</filePath>
            <menuGroup>InstallInfo</menuGroup>
            <menuItem>InstallGlobal</menuItem>
            <attributeName>Custom_ENMInstalled</attributeName>
            <value>true</value>
          </ModifyAttribute>
        </Method>
      </Request>

      <Request Name="RemovePreviousNavigationItems" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingNavItems" ProgressBar="Progress" ActionOnFail="Continue"  ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <Custom_isSERVersion_7_6_OrBelow>true</Custom_isSERVersion_7_6_OrBelow>
        </ConditionTrue>
        <Method>
          <RemoveMenuItemFromGroup Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.NavigationDocumentManager" UIMessageOnFail="#ENS_ErrorRemovingNavigationItems"
                                   ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <filePath>@globalProgramFileFolder/@\SWSolutionsWeb\SWDefaultWeb\Navigation.xml</filePath>
            <menuGroup>Monitoring</menuGroup>
            <menuItem>LIVE</menuItem>
          </RemoveMenuItemFromGroup>

          <RemoveMenuItemFromGroup Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.NavigationDocumentManager" UIMessageOnFail="#ENS_ErrorRemovingNavigationItems"
                                    ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <filePath>@globalProgramFileFolder/@\SWSolutionsWeb\SWDefaultWeb\Navigation.xml</filePath>
            <menuGroup>Monitoring</menuGroup>
            <menuItem>HISTORICAL</menuItem>
          </RemoveMenuItemFromGroup>

          <RemoveMenuItemFromGroup Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.NavigationDocumentManager" UIMessageOnFail="#ENS_ErrorRemovingNavigationItems"
                                    ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <filePath>@globalProgramFileFolder/@\SWSolutionsWeb\SWDefaultWeb\Navigation.xml</filePath>
            <menuGroup>Monitoring</menuGroup>
            <menuItem>OPTIONS</menuItem>
          </RemoveMenuItemFromGroup>

          <RemoveMenuItemFromGroup Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.NavigationDocumentManager" UIMessageOnFail="#ENS_ErrorRemovingNavigationItems"
                                    ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <filePath>@globalProgramFileFolder/@\SWSolutionsWeb\SWDefaultWeb\Navigation.xml</filePath>
            <menuGroup>Diagnostics</menuGroup>
            <menuItem>LIVE</menuItem>
          </RemoveMenuItemFromGroup>

          <RemoveMenuItemFromGroup Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.NavigationDocumentManager" UIMessageOnFail="#ENS_ErrorRemovingNavigationItems"
                                    ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <filePath>@globalProgramFileFolder/@\SWSolutionsWeb\SWDefaultWeb\Navigation.xml</filePath>
            <menuGroup>Diagnostics</menuGroup>
            <menuItem>HISTORICAL</menuItem>
          </RemoveMenuItemFromGroup>

          <RemoveMenuItemFromGroup Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.NavigationDocumentManager" UIMessageOnFail="@ENM_ErrorRemovingNavigationItems"
                                    ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
            <filePath>@globalProgramFileFolder/@\SWSolutionsWeb\SWDefaultWeb\Navigation.xml</filePath>
            <menuGroup>Diagnostics</menuGroup>
            <menuItem>OPTIONS</menuItem>
          </RemoveMenuItemFromGroup>
        </Method>
      </Request>

    </BrokerRequest>

    <BrokerRequest Name="Uninstall">

      <!--Notification Module uninstall-->
      <Request Name="UnregisterNotificationServiceWithOPCLogger" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringNotificationServiceWithOPCLogger" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <UnregisterServiceWithOPCLogger Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ServiceController">
            <regPath>@Custom_ESolutionsRegistryLocation/@\OPC Logger</regPath>
            <serviceName>PLActivePagerModule</serviceName>
          </UnregisterServiceWithOPCLogger>
        </Method>
      </Request>

      <Request Name="UnregisterAPMService" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringENSService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <UnregisterServiceIfExists Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.NTServiceController">
            <serviceName>ActivePagerModule</serviceName>
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/servicename=ActivePagerModule /u "@globalProgramFileFolder/@\EventNotification\APMService.exe"</args>
          </UnregisterServiceIfExists>
        </Method>
      </Request>

      <Request Name="UnregisterServicesManager" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringServiceManager" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\Services\ServiceManager.exe</cmd>
            <args>uninstall</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="UnregisterNotificationCOMComponents" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringNotificationCOMComponents" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <!--ASmsCtrl.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorUnregisteringASmsCtrl">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/u /s "@globalProgramFileFolder/@\EventNotification\ASmsCtrl.dll"</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="UnRegisterSNMPCOMComponents" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringSNMPCOMComponents" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <!--ASocket.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorUnregisteringASocket">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/u /s "@globalProgramFileFolder/@\EventNotification\ASocket.dll"</args>
          </RunExecutable>

          <!--ASocketx64.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorUnregisterinASocketx64">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/u /s "@globalProgramFileFolder/@\EventNotification\ASocketx64.dll"</args>
          </RunExecutable>

          <!--AxMmCtl.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorUnregisteringAxMmCtl">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/u /s "@globalProgramFileFolder/@\EventNotification\AxMmCtl.dll"</args>
          </RunExecutable>

          <!--AxMmCtlx64.dll-->
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_ErrorUnregisteringAxMmCtlx64">
            <cmd>%windir%\system32\regsvr32.exe</cmd>
            <args>/u /s "@globalProgramFileFolder/@\EventNotification\AxMmCtlx64.dll"</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="RemoveExtraNotificationFiles" EstTime="500" TimeOut="1200000" UIName="#ENS_RemovingNotificationFiles" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule</globalSetupType>
        </ConditionTrue>
        <Method>
          <DeleteFileIfExists Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotCleanupFiles">
            <fileName>@globalProgramFileFolder/@\EventNotification\APMService.InstallLog</fileName>
          </DeleteFileIfExists>
        </Method>
      </Request>

      <Request Name="UnregisterAPM" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringENS" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer|DbServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <UnregisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorUnregisteringENS">
            <regPath>@Custom_ESolutionsRegistryLocation</regPath>
            <moduleName>APM</moduleName>
          </UnregisterModule>
        </Method>
      </Request>

      <!--OPC Logger Module uninstall-->
      <Request Name="UnregisterOPCLoggerService" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringOPCLoggerService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <UnregisterServiceIfExists Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.NTServiceController">
            <serviceName>PLOpcAELogger</serviceName>
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/servicename=PLOpcAELogger /u "@globalProgramFileFolder/@\OPC Logger\OPCAELoggerSvc.exe"</args>
          </UnregisterServiceIfExists>
        </Method>
      </Request>

      <Request Name="RemoveExtraOPCLoggerFiles" EstTime="500" TimeOut="1200000" UIName="#ENS_RemovingOPCLoggerFiles" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <DeleteFileIfExists Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotCleanupFiles">
            <fileName>@globalProgramFileFolder/@\OPC Logger\OPCAELoggerSvc.InstallLog</fileName>
          </DeleteFileIfExists>

          <DeleteFileIfExists Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotCleanupFiles">
            <fileName>@globalProgramFileFolder/@\OPC Logger\Services.xml</fileName>
          </DeleteFileIfExists>
        </Method>
      </Request>

      <Request Name="UnregisterOPCLogger" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringOPCLogger" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <UnregisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorUnregisteringOPCLogger">
            <regPath>@Custom_ESolutionsRegistryLocation</regPath>
            <moduleName>OPC Logger</moduleName>
          </UnregisterModule>
        </Method>
      </Request>

      <!--DB Maintenance Module uninstall-->
      <Request Name="RemoveDbMaintenanceTasks" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingDBMaintenanceTasks" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|DbServer</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <!--Full DB Backup-->
          <DeleteScheduledTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask" UIMessageOnFail="#ENS_ErrorRemovingScheduledDatabaseMaintenanceTask">
            <taskName>Full DB Backup</taskName>
          </DeleteScheduledTask>

          <!--Rebuildindex-->
          <DeleteScheduledTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask" UIMessageOnFail="#ENS_ErrorRemovingScheduledDatabaseMaintenanceTask">
            <taskName>Rebuildindex</taskName>
          </DeleteScheduledTask>

          <!--ReorgIndex-->
          <DeleteScheduledTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask" UIMessageOnFail="#ENS_ErrorRemovingScheduledDatabaseMaintenanceTask">
            <taskName>ReorgIndex</taskName>
          </DeleteScheduledTask>

          <!--TrimDiagnosticLogTable-->
          <DeleteScheduledTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask" UIMessageOnFail="#ENS_ErrorRemovingScheduledDatabaseMaintenanceTask">
            <taskName>TrimDiagnosticLogTable</taskName>
          </DeleteScheduledTask>

          <!--TrimEventsTable-->
          <DeleteScheduledTask Library="WindowsScheduledTasks" Class="Installer.InstallTools.ScheduledTask" UIMessageOnFail="#ENS_ErrorRemovingScheduledDatabaseMaintenanceTask">
            <taskName>TrimEventsTable</taskName>
          </DeleteScheduledTask>

        </Method>
      </Request>

      <!--Alarm Sentry uninstall-->
      <Request Name="UnregisterAlarmSentryService" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringAlarmSentryService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <UnregisterServiceIfExists Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.NTServiceController">
            <serviceName>PLAlarmGenHS</serviceName>
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/servicename=PLAlarmGenHS /u "@globalProgramFileFolder/@\Websites\AlarmGenUI\Services\PLAlarmGen.exe"</args>
          </UnregisterServiceIfExists>
        </Method>
      </Request>

      <Request Name="UnregisterAlarmSentryOPCServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringAlarmSentryOPCServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\AlarmGen\DanSrvAE32.exe</cmd>
            <args>/unregserver</args>
          </RunExecutable>
        </Method>
      </Request>
      <Request Name="UnregisterAlarmSentryOPCServer64bit" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringAlarmSentryOPCServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\AlarmGen\DanSrvAE64.exe</cmd>
            <args>/unregserver</args>
          </RunExecutable>
        </Method>
      </Request>


      <Request Name="RemoveAlarmSentryVirtualDirectory" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingAlarmSentryVirtualDirectory" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <DeleteVirtualDirectory Library="IISManager" Class="Installer.InstallTools.IISManager" UIMessageOnFail="#Oneormorevirtualdirectoriescou">
            <nameDirectory>AlarmGenUI</nameDirectory>
          </DeleteVirtualDirectory>
        </Method>
      </Request>


      <Request Name="RemoveExtraAlarmSentryFiles" EstTime="500" TimeOut="1200000" UIName="#ENS_RemovingAlarmSentryFiles" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule</globalSetupType>
        </ConditionTrue>
        <Method>
          <DeleteFileIfExists Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotCleanupFiles">
            <fileName>@globalProgramFileFolder/@\Websites\AlarmGenUI\Services\PLAlarmGen.InstallLog</fileName>
          </DeleteFileIfExists>

          <DeleteFolder Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotCleanupFolder">
            <destPath>@globalProgramFileFolder/@\Websites\aspnet_client</destPath>
          </DeleteFolder>
        </Method>
      </Request>

      <Request Name="UnregisterAlarmSentry" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringAlarmSentry" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <UnregisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorUnregisteringAlarmSentry">
            <regPath>@Custom_ESolutionsRegistryLocation</regPath>
            <moduleName>AS</moduleName>
          </UnregisterModule>
        </Method>
      </Request>


      <!-- Remove ENM and Alarm Sentry Websites-->
      <Request Name="RemoveENMWebsiteShortcuts" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingWebsiteShortcuts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>
          <DeleteWebsiteShortcuts Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.WebSiteManager">
            <appStartMenuDir>Schneider Electric\StruxureWare Solutions</appStartMenuDir>
            <shortcutName>ENM Configuration</shortcutName>
          </DeleteWebsiteShortcuts>
          <DeleteWebsiteShortcuts Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.WebSiteManager">
            <appStartMenuDir>Schneider Electric\StruxureWare Solutions</appStartMenuDir>
            <shortcutName>Alarm Sentry</shortcutName>
          </DeleteWebsiteShortcuts>
        </Method>
      </Request>

      <Request Name="RemoveENMWebsite" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingWebsite" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
        </ConditionTrue>
        <Method>

          <RemoveIISWebSite Library="IISManager" Class="Installer.InstallTools.IISManager" UIMessageOnFail="#Oneormorevirtualdirectoriescou">
            <siteName>EnmConfig</siteName>
          </RemoveIISWebSite>
          <RemoveIISWebSite Library="IISManager" Class="Installer.InstallTools.IISManager" UIMessageOnFail="#Oneormorevirtualdirectoriescou">
            <siteName>AlarmSentry</siteName>
          </RemoveIISWebSite>
        </Method>
      </Request>


      <!--Shared Component Uninstall-->
      <Request Name="RemoveMandDWebsiteShortcuts" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingMandDWebsiteShortcuts" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>

          <DeleteWebsiteShortcuts Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.WebSiteManager">
            <appStartMenuDir>Schneider Electric\StruxureWare Solutions</appStartMenuDir>
            <shortcutName>Monitoring and Diagnostics</shortcutName>
          </DeleteWebsiteShortcuts>
        </Method>
      </Request>

      <Request Name="RemoveMandDWebsite" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingMandDWebsite" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_InstallSharedComponents>true</Custom_InstallSharedComponents>
        </ConditionTrue>
        <Method>
          <RemoveIISWebSite Library="IISManager" Class="Installer.InstallTools.IISManager" UIMessageOnFail="#Oneormorevirtualdirectoriescou">
            <siteName>MonDiagSpa</siteName>
          </RemoveIISWebSite>
        </Method>
      </Request>


      <Request Name="RemoveAppPool" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingAppPool" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#CouldnotconfigureISAPICGIPermi">
            <cmd>%systemroot%\system32\inetsrv\AppCmd.exe</cmd>
            <args>delete apppool /apppool.name:ENMSolutionsPool</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="RemoveWindowsGroups" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingWindowsGroups" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <DeleteWindowsGroup Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <groupName>ENMAdmin</groupName>
          </DeleteWindowsGroup>
          <DeleteWindowsGroup Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <groupName>ENMControl</groupName>
          </DeleteWindowsGroup>
          <DeleteWindowsGroup Library="WinUtilities" Class="Installer.InstallTools.WinUtilities">
            <groupName>ENMUser</groupName>
          </DeleteWindowsGroup>
        </Method>
      </Request>

      <Request Name="RemoveAPMInstallRoot" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingInstallRoot" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <DeleteRegValue Library="RegistrySetup" Class="Installer.InstallTools.SetupRegistry">
            <regPath>@Custom_ESolutionsRegistryLocation</regPath>
            <regValue>InstallRoot</regValue>
          </DeleteRegValue >
        </Method>
      </Request>



      <!--PLScada OPC Server uninstall-->
      <Request Name="UnregisterPLScadaOPCServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringPLScadaOPCAEServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\PLSCADAOPC\DanSrvAE32.exe</cmd>
            <args>/unregserver</args>
          </RunExecutable>
        </Method>
      </Request>
      <Request Name="UnregisterPLScadaOPCServer64bit" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringPLScadaOPCAEServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\PLSCADAOPC\DanSrvAE64.exe</cmd>
            <args>/unregserver</args>
          </RunExecutable>
        </Method>
      </Request>

      <Request Name="UnregisterPLScada" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringPLScada" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <UnregisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorUnregisteringOPCServer">
            <regPath>@Custom_ESolutionsRegistryLocation</regPath>
            <moduleName>PLSCADAOPC</moduleName>
          </UnregisterModule>
        </Method>
      </Request>

      <!-- Unregister Power Scada Expert opc components-->
      <Request Name="UnregisterPSEOPCServer32bit" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringPSEOPCAEServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>false</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\PSEOPCAE\DanSrvAE32.exe</cmd>
            <args>/unregserver</args>
          </RunExecutable>
        </Method>
      </Request>
      <Request Name="UnregisterPLScadaOPCServer64bit" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringPSEOPCAEServer" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <globalIsx64>true</globalIsx64>
        </ConditionTrue>
        <Method>
          <RunExecutable Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldntRunExe">
            <cmd>@globalProgramFileFolder/@\PLSCADAOPC\DanSrvAE64.exe</cmd>
            <args>/unregserver</args>
          </RunExecutable>
        </Method>
      </Request>

      <!--Hot Standby Module uninstall-->
      <Request Name="UnregisterHotStandbyService" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringHotStandbyService" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <UnregisterServiceIfExists Library="InstallTools.Extensions" Class="SchneiderElectric.Installer.InstallTools.Extensions.NTServiceController">
            <serviceName>PLHotStandbyService</serviceName>
            <cmd>%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe</cmd>
            <args>/servicename=PLHotStandbyService /u "@globalProgramFileFolder/@\HotStandby\PlsHotStandbySvc.exe"</args>
          </UnregisterServiceIfExists>
        </Method>
      </Request>

      <Request Name="RemoveExtraHotStandbyFiles" EstTime="500" TimeOut="1200000" UIName="#ENS_RemovingHotStandbyFiles" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <DeleteFileIfExists Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotCleanupFiles">
            <fileName>@globalProgramFileFolder/@\HotStandby\PlsHotStandbySvc.InstallLog</fileName>
          </DeleteFileIfExists>
        </Method>
      </Request>

      <Request Name="UnregisterHotStandby" EstTime="500" TimeOut="100000" UIName="#ENS_UnregisteringHotStandby" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_Solution_IsPowerLogicScadaInstalled>true</Custom_Solution_IsPowerLogicScadaInstalled>
        </ConditionTrue>
        <Method>
          <UnregisterModule Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.ModuleRegistrar" UIMessageOnFail="#ENS_ErrorUnregisteringHotStandby">
            <regPath>@Custom_ESolutionsRegistryLocation</regPath>
            <moduleName>PLHotStandby</moduleName>
          </UnregisterModule>
        </Method>
      </Request>

      <!--Remove Root Install Folder-->
      <Request Name="RemoveRootInstallFolder" EstTime="500" TimeOut="1200000" UIName="#ENS_RemovingRootFolder" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule</globalSetupType>
          <Custom_SERInstalled>false</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>false</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <DeleteFolder Library="WinUtilities" Class="Installer.InstallTools.WinUtilities" UIMessageOnFail="#ENS_CouldNotCleanupFolder">
            <destPath>@globalProgramFileFolder</destPath>
          </DeleteFolder>
        </Method>
      </Request>


      <!--Installer Registry Cleanup-->
      <Request Name="CleanRegistry" EstTime="500" TimeOut="100000" UIName="#ENS_RemovingRegistryEntries" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <Method>
          <DeleteRegPath Library="RegistrySetup" Class="Installer.InstallTools.SetupRegistry">
            <regPath>SOFTWARE\Schneider Electric\Installer</regPath>
          </DeleteRegPath>
        </Method>
      </Request>

      <!--Request to let SER know that ENM has been uninstalled-->
      <Request Name="ModifySERInstallInfoUninstall" EstTime="500" TimeOut="100000" UIName="#ENS_ModifyingSERInstallInfo" ProgressBar="Progress" ActionOnFail="Continue" ResourceFile="EventNotificationModule.Resources.Installer.InstallStrings" ResourceAssembly="EventNotificationModule.Resources.Installer">
        <ConditionTrue>
          <globalSetupType>EventNotificationModule|AppServer</globalSetupType>
          <Custom_SERInstalled>true</Custom_SERInstalled>
          <Custom_Solution_IsSERInstalled>true</Custom_Solution_IsSERInstalled>
        </ConditionTrue>
        <Method>
          <ModifyAttribute Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.XMLFileHelper" UIMessageOnFail="#ENS_ErrorModifyingSERInstallInfo">
            <filePath>@globalProgramFileFolder/@\Uninst_SequenceEventsRecorder\InstallInfo.xml</filePath>
            <menuGroup>InstallInfo</menuGroup>
            <menuItem>InstallGlobal</menuItem>
            <attributeName>Custom_APMInstalled</attributeName>
            <value>false</value>
          </ModifyAttribute>
          <ModifyAttribute Library="InstallTools.Extensions.eSolutions" Class="SchneiderElectric.Installer.InstallTools.Extensions.eSolutions.XMLFileHelper" UIMessageOnFail="#ENS_ErrorModifyingSERInstallInfo">
            <filePath>@globalProgramFileFolder/@\Uninst_SequenceEventsRecorder\InstallInfo.xml</filePath>
            <menuGroup>InstallInfo</menuGroup>
            <menuItem>InstallGlobal</menuItem>
            <attributeName>Custom_ENMInstalled</attributeName>
            <value>false</value>
          </ModifyAttribute>
        </Method>
      </Request>
    </BrokerRequest>

  </BrokerRequests>
</InstBroker>