Tip 2: Don't forget to include this <Component> into <Feature> tag.
Tip 3: Mark service executable <File> tag with KeyPath='yes' attribute.
Tip 4: If you want to configure user access rights for this service, include <util:PermissionEx> tag.
Tip 4.1: Don't forget to include "xmlns:util" namespace into <Wix> tag.
Tip 4.2: Don't forget to add "-ext WixUtilExtension" parameter to "candle" and "light" command lines.
Tip 5: User needs to run installer under administrative account to be able to install service under LocalSystem account.
Real example
- installs and starts service on installation;
- stops and removes service on uninstallation.
myapplication.wxs
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'>
<Product ... >
<Package ... />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='INSTALLDIR' Name='MyApplication'>
<Component Id='MyService' Guid='2575CFDC-5F26-4D81-BCD3-81F4209B7CAD'>
<File Id='MyService.exe' Name='MyService.exe' Source='MyService.exe' DiskId='1' KeyPath='yes' />
<ServiceInstall Id="MyService" Type="ownProcess" Name="MyService" DisplayName="MyService display name"
Description="MyService description" Start="auto" Account="LocalSystem" ErrorControl="normal">
<util:PermissionEx User="Everyone" ServicePauseContinue="yes" ServiceQueryStatus="yes"
ServiceStart="yes" ServiceStop="yes" ServiceUserDefinedControl="yes" />
</ServiceInstall>
<ServiceControl Id="MyService" Start="install" Stop="both" Remove="both" Name="MyService" Wait="no" />
</Component>
...
</Directory>
</Directory>
<Feature Id='Complete' Level='1'>
...
<ComponentRef Id='MyService' />
...
</Feature>
</Product>
</Wix>
build.bat
candle.exe myapplication.wxs -ext WixUtilExtension
light.exe myapplication.wixobj -ext WixUIExtension -ext WixUtilExtension
No comments:
Post a Comment