繁体   English   中英

我如何使用wix知道我的Windows服务是否已经安装

[英]How can I know if my windows service is already installed, using wix

我使用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,您可以在自定义操作文件中手动更改服务启动类型并启动服务(如果需要)。 可以在这里找到详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM