如何使用wix知道我的windows服务是否已经安装
本文关键字:是否 服务 安装 windows 我的 何使用 wix | 更新日期: 2023-09-27 18:22:43
我使用WIX安装应用程序&一种服务,
如果我第一次安装该服务,我希望它被"禁用",并且通过在serviceInstall元素中设置字段Start="disabled"可以正常工作。
如果我在服务已经安装在计算机上并设置为"自动"的情况下安装(升级)该服务,我希望该服务在升级后也为"自动的",但我无法获得这种行为,该服务将被升级并设为"禁用的"。
我尝试使用2个serviceInstall元素来实现这一点,其中一个元素Start="disabled",另一个元素Start="Auto"。
我为每个serviceInstall添加了一个条件,询问服务是否已经安装。
我想我的条件不太好。。。。
最好的方法是什么?
非常感谢
我最近也遇到了类似的问题,我处理这个问题的方法是在安装后使用自定义操作。它看起来像这样:
<CustomAction Id="SetStartUpType" BinaryKey="CA.SetStartUpType" DllEntry="CustomAction" Execute="immediate" Return ="check"/>
<Binary Id="CA.SetStartUpType" SourceFile="../WixCustomAction/bin/$(var.BUILD)/WixCustomAction.CA.dll" />
<InstallExecuteSequence>
<Custom Action='SetStartUpType' After='InstallFinalize'>Installed</Custom>
</InstallExecuteSequence>
将自定义操作条件设置为"已安装"可确保仅在已安装的情况下更改启动类型。因此,在wix文件中,您可能只需要一个start="disabled"的serviceinstall元素就可以禁用第一次安装。
感谢Peter Kelly,有一种方法可以手动更改服务启动类型,并在自定义操作文件中启动服务(如果您愿意的话)。详细信息可在此处找到