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

时间:2012-02-07 06:05:29

标签: c# .net wix

我使用WIX安装应用程序&服务,

如果我是第一次安装该服务,我希望它被“禁用”,并且通过在serviceInstall元素中设置字段Start =“disabled”可以正常工作。

如果我在服务器上安装了服务并安装(升级)服务并设置为“自动”,我希望升级后服务也是“自动”,我不能得到这种行为,该服务已升级并设置为“已禁用”。

我尝试使用2个serviceInstall元素,其中一个是Start =“disabled”,另一个是Start =“Auto”。

我为每个serviceInstall添加了一个条件,询问是否已经安装了该服务。 我猜我的条件不好......

最好的方法是什么?

非常感谢

1 个答案:

答案 0 :(得分:0)

我最近遇到了类似的问题,我接触它的方式是在安装后使用自定义操作。它看起来像这样:

<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文件中,您可能只需要一个service =“disabled”的serviceinstall元素,以便第一次安装被禁用。

感谢Peter Kelly,有一种方法可以在自定义操作文件中手动更改服务启动类型并启动服务(如果您愿意)。可以找到详细信息here