【发布时间】:2021-03-08 20:25:56
【问题描述】:
对 customAction 毫无疑问
<Custom Action='CustomActionId.StopService2' After='CustomActionId.StopService1>REMOVE</Custom>
因此,此 REMOVE 标志将使此操作仅在卸载或升级/卸载/修复/重新配置时运行我的自定义操作
【问题讨论】:
标签: wix windows-installer
对 customAction 毫无疑问
<Custom Action='CustomActionId.StopService2' After='CustomActionId.StopService1>REMOVE</Custom>
因此,此 REMOVE 标志将使此操作仅在卸载或升级/卸载/修复/重新配置时运行我的自定义操作
【问题讨论】:
标签: wix windows-installer
Windows 服务:不应通过自定义操作控制或安装 Windows 服务,而应通过内置 MSI 机制:ServiceInstall、ServiceControl。这些 WiX 元素映射到相应的 MSI 表,它们支持正常服务正确安装所需的一切。如果做得好,它是非常可靠的。 The various ways used (and abused) to install Windows Services(推荐几个)。
WiX 服务示例:这是一个很好的示例,说明如何使用 MSI / WIX 正确安装 Windows 服务: https://github.com/rstropek/Samples/tree/master/WiXSamples/WindowsService
删除:关于属性REMOVE。它将在几个 MSI 操作期间设置:修改、删除、升级。在完全卸载期间,它将设置为 REMOVE=ALL,在其他情况下,它将设置为在维护操作期间将受到影响的功能列表。条件艰苦。 Here is an older answer on conditions.
重大升级:请记住,在重大升级操作期间,既有旧版本的卸载,也有新版本的安装。 REMOVE 会在被卸载的版本中设置,但一般不会在正在安装的版本中设置。
如果您想在重大升级期间跳过该操作,您可以尝试:(REMOVE~="ALL") AND (NOT UPGRADINGPRODUCTCODE) 为 explained in this answer。这里是a longer answer on conditions and their permutations.
条件调试:您可以通过使用 VBScripts 在安装过程中显示消息框来调试条件as explained here(朝向底部)。这对消除猜测很有帮助。只需运行设置并在您的自定义操作运行时显示消息框 - 我保证您会有惊喜。当需要进行这样的调试时,条件可以达到一个状态。 See this example.
【讨论】: