将服务配置为延迟自动启动(以及在XP / 2003上自动启动)

时间:2017-05-15 05:58:33

标签: wix windows-installer

我有一个WiX脚本,用于安装服务。我在ServiceInstall下面有Component个元素。

<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes"
                Name="abc" DisplayName="abc service"
                Description="It does this" Start="auto"
                Account="LocalSystem" ErrorControl="normal" Interactive="no">
  <ServiceConfig DelayedAutoStart="yes" OnInstall="yes" OnReinstall ="yes" />
</ServiceInstall>

从代码中可以看出,我正在使用带有 ServiceConfig 标志的DelayedAutoStart来将服务设置为在延迟自动启动模式下启动。但是,WiX编译器(candle.exe)会触发警告:

  

警告CNDL1150:ServiceConfig功能记录在   Windows Installer SDK到&#34;没有按预期工作。&#34;考虑更换   ServiceConfig与WixUtilExtension ServiceConfig元素。

因此,我尝试使用util:ServiceConfig ^,但是这个元素没有任何属性来控制服务启动。

^ 命名空间导入:

<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
  xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 

因此,问题很简单:

  1. 如何将服务启动设置为自动(延迟启动)?
  2. 如何仅在Vista及更高版本上有条件地执行此操作,并在Windows XP / 2003上正常(自动)?

1 个答案:

答案 0 :(得分:0)

检查source后,目前似乎不可能。 Wix仅使用SERVICE_CONFIG_FAILURE_ACTIONS参数调用ChangeServiceConfig2 function,而不调用SERVICE_CONFIG_DELAYED_AUTO_START_INFO

如果我是你,我会在CMD中编写一个名为sc config abc start=delayed-auto的自定义操作。

至于你的第二个问题,为版本大于Vista的所有版本添加VersionNT版本条件(VersionNT >= 600