如何在wix中进行重大升级时停止并且不卸载Windows服务?

zho*_*ang 4 service wix upgrade

我正在开发一个应该在wix v3.8中安装Windows服务的安装程序.问题是我们需要进行重大升级而不卸载服务只是为了阻止它.

我们在包含服务exe文件的组件中使用ServiceInstall和ServiceControl.有没有办法使ServiceInstall的执行有条件(使用像REMOVE ="ALL"和NOT UPGRADINGPRODUCTCODE这样的条件)所以升级时没有卸载服务(刚刚停止,所以我们可以升级文件)?

一种解决方案是使用自定义操作,但也许有更好的方法?

谢谢!

Rob*_*ing 8

您必须覆盖处理这些元素的操作.如果它适用于您的MSI包中的所有服务(如果您只有一个服务,那么你好),以下可能会有效:

<InstallExecuteSequence>
   <DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

您不需要条件删除,因为DeleteServices已经考虑了Component的状态.