【问题标题】: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】:

      使用&lt;ServiceControl/&gt;

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

      【讨论】:

        最近更新 更多