C# 我如何知道我的windows服务是否已经安装,使用wix

C# 我如何知道我的windows服务是否已经安装,使用wix,c#,.net,wix,C#,.net,Wix,我使用WIX安装应用程序和服务 如果我是第一次安装该服务,我希望它被“禁用”,并且通过在serviceInstall元素中设置字段Start=“disabled”可以正常工作 如果我安装(升级)该服务,而该服务已安装在计算机上并设置为“自动”,我希望该服务在升级后也是“自动”的,我无法获得此行为,该服务将升级并设置为“禁用” 我试图通过使用2个serviceInstall元素来实现这一点,其中一个是Start=“disabled”,另一个是Start=“Auto” 我在每个serviceInst

我使用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,有一种方法可以手动更改服务启动类型,并在自定义操作文件中启动服务(如果您愿意)。详情见