在WIX中停止服务并在安装完成时启动

时间:2012-06-13 16:19:10

标签: installer wix wix3.5

我正在使用WiX 3.5创建安装程序,安装Windows服务并将DLL复制到第三方应用程序的bin目录。第三方应用程序还有一系列Windows服务,在安装完成后复制并启动DLL之前,需要停止这些服务。我需要做些什么才能实现这一目标。我已经查找了示例,但只能找到如何启动我正在安装的服务。

***另外,我正在安装的服务需要在特定的用户帐户下运行。我看到如何在WIX中定义服务帐户/密码,但我对使用它犹豫不决,因为它以XML格式存储未加密的密码,我对此有安全顾虑。

2 个答案:

答案 0 :(得分:6)

首先,要停止服务,您需要使用ServiceControl元素。

<ServiceControl Id="serviceName" Name="actualServiceName" Stop="both" Start="both" Wait ="yes" />

要回答您的问题,您可以将用户名和密码设置为用户发送给MSI的属性,或者用户从GUI输入的属性。

<ServiceInstall Id="serviceName" Name="shortName" DisplayName="longName" Type="ownProcess" Start="auto" ErrorControl="normal" Account="[USER]" Password="[USERPWD]" Description="description" />
<Property Id="USER" Value="defaultValue" />
<Property Id="USERPWD" Value="defaultValue" Hidden="yes" />

当然,不需要默认值,也不是真的推荐,但我还是把它放在那里。

答案 1 :(得分:4)

使用<ServiceControl/>

<ServiceControl Id="thirdPartyService" Name="thirdPartyService" Stop="install" Start="install" Wait="yes" />