如何在WiX安装程序中更改Windows服务启动类型

Ray*_*Ray 29 windows service installer windows-installer wix

我们需要将Windows服务的启动类型从"自动"修改为"自动延迟启动".我该怎么做呢?

我的代码是这样的:

<ServiceInstall
    Id="WinServiceInstall"
    Name="ServiceManager"
    DisplayName="ServiceManager"
    Type="ownProcess"
    Start="auto"
    ErrorControl="normal"
    Vital ='yes'
    Description ='Monitoring and running the jobs'
    Account="[SERVICEACCOUNT]"
    Password="[SERVICEPASSWORD]">
    <util:ServiceConfig
        FirstFailureActionType="restart"
        SecondFailureActionType="restart"
        ThirdFailureActionType ="restart"
        cRestartServiceDelayInSeconds ="10" />
</ServiceInstall>
Run Code Online (Sandbox Code Playgroud)

如何设置重启服务时间?如果失败,我想在2分钟后设置重启服务.

Mat*_*rpe 59

在ServiceConfig元素中放置一个ServiceInstall元素.

<ServiceConfig DelayedAutoStart="yes" OnInstall="yes" OnReinstall ="yes" />
Run Code Online (Sandbox Code Playgroud)

  • 我测试了它.ServiceConfig具有如下所示的必需属性.没有它们就无法编译.<wix:ServiceConfig DelayedAutoStart ="yes"OnInstall ="yes"OnReinstall ="yes"/> (3认同)

Dav*_*sen -2

如果您需要支持真正旧版本的 Windows,那么您将需要使用 reg-value 来设置它,因为 MSI < 5.0 无法通过 ServiceConfig 识别此选项。否则,您应该使用 ServiceConfig 方法。

<RegistryValue Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\[ServiceName]"
               Type="integer" Name="DelayedAutostart" Value="1"/>
Run Code Online (Sandbox Code Playgroud)

我把它放在与 ServiceInstall 相同的组件中,一切似乎都工作正常。我想你可以在服务重启时做同样的事情。

  • 请注意:DelayedAutostart 参数不可靠。看起来 Windows 要么缓存它,要么将其保存在多个位置,因为如果您在运行时更改它,通常它实际上不会更改 services.msc 显示的启动类型... (2认同)