在WiX安装程序中设置服务启动类型

时间:2017-12-04 09:42:58

标签: service wix windows-installer

我正在尝试使用WiX将预安装服务的启动类型设置为Automatic。另一个任务是在安装时启动服务,我通过以下方式实现:

<ServiceControl 
    Id="ServiceRunningState" 
    Name="[Service Name]" 
    Start="install"
    Stop="install"
    Wait="yes" /> 

现在我还要设置启动类型。我尝试了以下内容(请参阅answer):

<ServiceConfig
    Id="ServiceStartup" 
    ServiceName="[Service Name]"
    DelayedAutoStart="yes"
    OnInstall="yes" 
    OnReinstall="yes" />

但这并没有改变服务的启动类型(从Manual启动类型测试)。此外,我希望启动类型为Automatic,而不是Automatic (Delayed Start)

请注意,我正在尝试修改现有服务,因此没有ServiceInstall元素。

这两个元素(ServiceControlServiceConfig)是Component父元素中的子元素。

感谢任何帮助:)

3 个答案:

答案 0 :(得分:2)

MSI不支持更改程序包未安装的服务的启动类型。 ServiceConfig doesn't let you get around that

  

仅适用于此软件包安装的已安装的自动启动服务或服务,其中包含ServiceInstall表的StartType字段中的SERVICE_AUTO_START。

答案 1 :(得分:0)

将“DelayedAutoStart”参数设置为“no”,而不是“yes”。

答案 2 :(得分:0)

通过RegistryKey编辑注册表解决,请参阅示例:

<RegistryKey Root="HKLM"
             Key="SYSTEM\CurrentControlSet\Services\[Service Name]"
             Action="create">
    <RegistryValue Type="integer" Name="Start" Value="2" />
    <RegistryValue Type="integer" Name="DelayedAutostart" Value="0" />
</RegistryKey>

注意服务可能在服务GUI中显示为Automatic (Delayed Start)。但是,重新启动后,Services GUI将服务启动类型显示为Automatic