In this article I'm going to discuss create wix installer for windows service. in this scenario i considered about following situation.
- Attach Exe with App.config
- Attach external dll
- Modify App.config values based on installed location.
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="5AC767F2-4F21-45DF-9DAB-C013C62B2B67" Name="Installer" Language="1033" Version="1.0.0.0" Manufacturer="TRT " UpgradeCode="3fd83540-23f6-45f4-bb1c-e77c12725680">
<Package InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="SampleApp.cab" EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="Installer">
<Directory Id="TestService" Name="TestService">
<Component Id="MainExecutable" Guid="CE30D5D8-3211-4890-A9DC-0C315C15B39E">
<File Id="testServiceexe" Name="TestInstallerProject.exe" DiskId="1" KeyPath="yes" Source="..\TestInstallerProject\bin\Debug\TestInstallerProject.exe" />
<File Id="TestInstallerProject.exe.config" Name="TestInstallerProject.exe.config" Source="..\TestInstallerProject\App.config" Vital="yes" DiskId="1" />
<File Id="GOOGLE.GDATA.ANALYTICS.DLL" Name="Google.GData.Analytics.dll" Source="..\TestInstallerProject\bin\Debug\Google.GData.Analytics.dll" />
<File Id="GOOGLE.GDATA.CLIENT.DLL" Name="Google.GData.Client.dll" Source="..\TestInstallerProject\bin\Debug\Google.GData.Client.dll" />
<ServiceInstall Name="ScheduledService" Type="ownProcess" Start="auto" ErrorControl="ignore" Id="ServiceInstaller" DisplayName="ScheduledService" Account="[SERVICEACCOUNT]" Password="[SERVICEACCOUNTPASSWORD]">
<util:ServiceConfig FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="restart" ResetPeriodInDays="1" RestartServiceDelayInSeconds="1" />
</ServiceInstall>
<ServiceControl Id="StartService" Name="ScheduledService" Start="install" Stop="both" Remove="uninstall" Wait="no" />
<RemoveFolder Id="INSTALLDIR" On="uninstall" />
<util:XmlFile Id="ModifyServiceLocation" ElementPath="//configuration/appSettings/add[\[]@key='TextLocation'[\]]/@value" File="[TestService]\TestInstallerProject.exe.config" Action="setValue" Value="[TestService]ScheduledServiceNew.txt" PreserveModifiedDate="yes" SelectionLanguage="XPath" Sequence="1" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id="Complete" Title="Installer" Level="1">
<ComponentRef Id="MainExecutable" />
</Feature>
<UI>
</UI>
</Product>
</Wix>
when attache app.config, you have to consider about name and the id of the config. it should be the name of the exe.
<File Id="TestInstallerProject.exe.config" Name="TestInstallerProject.exe.config" Source="..\TestInstallerProject\App.config" Vital="yes" DiskId="1" />
for modify the App.config have to use util:XmlFile tag. in here my app.config file is something like this.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="TextLocation" value="d:\ScheduledServiceNew.txt"/>
</appSettings>
</configuration>
I want to update it into something like this: <?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="TextLocation" value="C:\Program Files (x86)\Installer\TestService\ScheduledServiceNew.txt"/>
</appSettings>
</configuration>
for that i have to use util:XmlFile tag as follows:
<util:XmlFile Id="ModifyServiceLocation" ElementPath="//configuration/appSettings/add[\[]@key='TextLocation'[\]]/@value" File="[TestService]\TestInstallerProject.exe.config" Action="setValue" Value="[TestService]ScheduledServiceNew.txt" PreserveModifiedDate="yes" SelectionLanguage="XPath" Sequence="1" />
once you compile the project you can create installer using wix for windows service
No comments:
Post a Comment