WiX 安装程序在自定义操作之前启动服务

问题描述 投票:0回答:1

我有 WiX 安装程序,它创建一个 Windows 服务并启动它。我需要在服务启动之前完成一些自定义操作,因为它们包括读取一些配置文件。这是我在安装顺序中定义的内容:

<InstallExecuteSequence>

    <Custom Action="test" Before="StartServices">NOT Installed </Custom>

</InstallExecuteSequence>

处理服务的安装和启动/停止的代码是:

<ServiceInstall Id="ServiceInstaller"
                                Type="ownProcess"
                                Vital="yes"
                                Name="MyWindowsService"
                                DisplayName="MyWindowsService"
                                Description="New Windows Service"
                                Start="auto"
                                Account="LocalSystem"
                                ErrorControl="normal" />
                
                <ServiceControl Id="StartService"
                                Name="MyWindowsService"
                                Start="install"
                                Stop="both"
                                Remove="uninstall"
                                Wait="yes" />

                
                <ServiceControl Id="StopService"
                                Name="MyWindowsService"
                                Stop="uninstall"
                                Remove="uninstall"
                                Wait="yes" />

尽管如此,我的服务在自定义操作完成之前启动,并且我收到一条因未加载配置文件而导致的错误。

是否有其他方法可以确保在启动我的服务之前完成自定义操作?

wix wix3
1个回答
0
投票

Gemini 说:您的 WiX 安装程序代码中的问题是一个轻微的语法错误。以下是如何确保您的自定义操作在启动服务之前完成:

  1. 删除“未安装”条件:

在这种情况下,自定义元素中的“未安装”条件是不必要的。 InstallExecuteSequence 已经根据 Before 属性指定了执行顺序。

  1. 调整Before属性:

更改 Custom 元素中 Before 属性的值,以直接引用启动服务的 ServiceControl 元素。

这是更正后的代码: XML

<Custom Action="test" Before="StartService" />

使用 ce 代码请注意预防。

通过此更改,测试自定义操作将在 StartService 操作之前执行,确保您的配置文件在服务尝试使用它们之前加载。

以下是更改的详细信息:

Removed NOT Installed: This condition doesn't affect the order of execution in this scenario.
Modified Before attribute: Directly references StartService element to ensure the custom action runs before starting the service.

通过执行这些步骤,您的自定义操作应该在服务启动之前运行,从而使您能够正确加载配置文件而不会遇到错误。

© www.soinside.com 2019 - 2024. All rights reserved.