【问题标题】:Stopping A Service In WIX And Starting When Install Is Complete在 WIX 中停止服务并在安装完成时启动
【发布时间】:2026-02-10 01:40:01
【问题描述】:
我正在使用 WiX 3.5 创建一个安装程序,用于安装 Windows 服务并将 DLL 复制到第三方应用程序的 bin 目录中。第三方应用程序具有一系列 Windows 服务,在 DLL 被复制之前需要停止,并在安装完成后启动。我需要做些什么来实现这一点。我找了一些例子,但只能找到如何启动我正在安装的服务。
***附带说明,我正在安装的服务需要在特定用户帐户下运行。我看到了如何在 WIX 中定义服务帐户/密码,但我犹豫要不要使用它,因为它以 XML 格式存储未加密的密码,我对此有安全问题。
【问题讨论】:
标签:
installation
wix
wix3.5
【解决方案1】:
首先,要停止服务,您需要使用 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" />
当然,默认值是不需要的,也不是很推荐,但我还是放在那里。
【解决方案2】:
使用<ServiceControl/>
<ServiceControl Id="thirdPartyService" Name="thirdPartyService" Stop="install" Start="install" Wait="yes" />