我正在尝试Wix 3.6,这就是它现在的样子:
<?xml version="1.0" encoding="UTF-8"?>
<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="myappINSTALLDIR" Name="myapp5Service"> <Component Id="SampleServiceComponent" DiskId="1" Guid="6f51c0f3-776c-4aec-a200-1f199352c6c3" Win64="yes"> <File Id="myapp5.WindowsService.exe" Name="myapp5.WindowsService.exe" Source="$(var.myapp.WindowsService.TargetDir)\myapp5.WindowsService.exe" KeyPath='yes'/> ... <ServiceInstall Id="InstallmyappService" DisplayName="myappService" Name="myapp5.WindowsService.exe" Description="myapp 5 Service - För effektivare och enklare operationsplanering" Account="LocalSystem" ErrorControl="normal" Start="auto" Type="ownProcess" Vital="yes" /> <ServiceControl Id="ControlmyappService" Name="myapp5.WindowsService.exe" Start="install" Stop="both" Remove="uninstall" Wait="yes" /> </Component> </Directory> </Directory> <WixVariable Id="WixUIBannerBmp" Value="$(var.ProjectDir)\Image\myappTopBanner.bmp" /> <WixVariable Id="WixUIDialogBmp" Value="$(var.ProjectDir)\Image\myappDialogBackground.bmp" /> <Property Id="WIXUI_INSTALLDIR" Value="myappINSTALLDIR" /> <UIRef Id="WixUI_InstallDir" /> <Feature Id="ProductFeature" Title="Wix_myapp.WindowsService" Level="1"> <ComponentRef Id="SampleServiceComponent" /> </Feature> <Media Id="1" Cabinet="SampleServiceComponent.cab" EmbedCab="yes" /> </Product>
现在我需要在Wix设置中添加一个对话框,其中一个appSetting和一个baseadress(WCF)设置为app.config.这大部分都是在安装之前完成的,因为它将决定Wix安装的Windows服务的名称.
而exampel会很棒!
编辑1:
<WixVariable Id="WixUIBannerBmp" Value="$(var.ProjectDir)\Image\myappTopBanner.bmp" /> <WixVariable Id="WixUIDialogBmp" Value="$(var.ProjectDir)\Image\myappDialogBackground.bmp" /> <Property Id="SERVICEADDRESS" Value="http://serviceaddress"/> <Property Id="WIXUI_INSTALLDIR" Value="myappINSTALLDIR" /> <UIRef Id="WixUI_InstallDir" /> <util:XmlFile Id="UpdateBaseAddress" Action="setValue" File="$(var.myapp.WindowsService.TargetDir)\myapp5.WindowsService.exe.config" SelectionLanguage="XPath" Permanent="yes" ElementPath="/configuration/applicationSettings/ServiceName" Name="baseAddress" Value="[SERVICEADDRESS]" /> <Feature Id="ProductFeature" Title="Wix_myapp.WindowsService" Level="1"> <ComponentRef Id="SampleServiceComponent" /> </Feature> <Media Id="1" Cabinet="SampleServiceComponent.cab" EmbedCab="yes" /> </Product>
您可以将WixUtilExtension.dll的引用添加到安装程序项目,然后使用XmlFile更新app.config,如:
<Property Id="SERVICEADDRESS" Value="http://serviceaddress"/> <util:XmlFile Id="UpdateBaseAddress" Action="setValue" File="[DirApplication]$(var.app.config)" SelectionLanguage="XPath" Permanent="yes" ElementPath="/configuration/applicationSettings/...." Name="baseAddress" Value="[SERVICEADDRESS]" />
请注意,您需要设置目录和.config文件的名称(您可以使用$(var.ProjectName.TargetFileName).config,它应该自动为您完成