以下是安装了我的服务的.wxs安装程序文件的一部分。我有一个WiX UI对话框,用户可以选择安装服务以在LocalSystem
帐户下运行,也可以输入他们想要的帐户凭据。 UI有两个文本框(一个绑定到ACCOUNT
属性,一个绑定到PASSWORD
属性)和一个绑定到名为USELOCALSYSTEMACCOUNT
的属性的复选框。
单独地,这些服务安装程序可以正常工作,您可以在下面看到ServiceInstall
部分。但是,如果USELOCALSYSTEMACCOUNT
未设置为1,我希望安装程序使用用户输入凭据安装服务,或者如果LocalSystem
设置为1,则使用USELOCALSYSTEMACCOUNT
帐户,但我是不确定如何做到这一点。 Condition
代码在ServiceInstall
代码中无效,因此我对如何实现这一目标感到有些失落。
下面的WiX组件部分:
<Component Id='MainExe' Guid='*'>
<File Id='MainService'
Name='MyService.exe'
Source='$(var.ServiceRoot2)\SA.MyService.exe'/>
<ServiceInstall Id='MyService'
Type='ownProcess'
Vital='yes' Name='MyService'
Name='$(var.HumanProductName)'
Description='$(var.ProductDescription)'
Start='demand'
Account='[ACCOUNT]'
Password='[PASSWORD]'
ErrorControl='ignore'
Interactive='no'/>
<ServiceInstall Id='MyService'
Type='ownProcess'
Vital='yes'
Name='$(var.HumanProductName)'
Description='$(var.ProductDescription)'
Start='demand'
Account='LocalSystem'
ErrorControl='ignore'
Interactive='no'/>
<ServiceControl Id='MyServiceServiceControl'
Stop='both'
Remove='both'
Name='$(var.HumanProductName)'
Wait='yes'/>
</Component>
答案 0 :(得分:3)
您应该能够将条件放在整个组件周围,并且只具有LocalSystem版本和用户指定的版本。 Wix非常聪明,不能在安装程序中将Myservice.exe打包两次。只要确保你的情况已经'#34;或已安装&#34;附加到它,因为我过去有问题,条件组件/功能没有卸载,因为它们所依赖的属性在卸载期间没有设置。如果它是机器的状态(VersionNT / VersionVT64保持不变),则省略&#34; OR Installed&#34;应该没事。