WiX:安装时启动服务,但不进行重大升级

时间:2014-02-06 19:42:51

标签: wix custom-action

出于某些原因,我希望我的安装程序安装的服务能够在全新安装时自动启动 <升级时,em> not 。看起来ServiceControl Element不允许这么精细的粒度。

我目前的代码如下:

<ServiceControl Id="StartService" Start="install" Stop="both" Remove="both" Name="MyService" Wait="no"/>

有没有办法实现这个目标?也许使用CustomAction而不是ServiceControl元素?

2 个答案:

答案 0 :(得分:1)

如果您已经发布了以前的MSI版本,则为StartServices操作添加条件为时已晚 - UPGRADINGPRODUCTCODE用于升级的旧设置,而不是较新的设置。在任何情况下,在升级期间,您需要在较新的升级安装中使用条件,因为这将是实际启动服务的条件,而不是正在卸载的旧服务。在检测到旧版本时设置的新安装的升级信息中需要“OLDERPRODUCTFOUND”或等效属性,并在条件中使用该属性。请注意,StartServices适用于所有服务,而不仅仅适用于所有服务,因此如果您不希望所有服务出现此行为,则需要另一种解决方案。

答案 1 :(得分:0)

您可以尝试在StartServices自定义aciton上添加条件,例如:

  <InstallExecuteSequence>
   <StartServices Sequence="5900">
      <![CDATA[VersionNT AND NOT UPGRADINGPRODUCTCODE]]>
    </StartServices>
  </InstallExecuteSequence>

我没有测试过这个确切的条件,特别是UPGRADINGPRODUCTCODE,但是我在同一个自定义操作(StartServices)上使用了不同的条件,这是出于我自己的目的而且完美无缺。