【问题标题】:Query regarding WIX custom Action REMOVE关于 WIX 自定义操作 REMOVE 的查询
【发布时间】:2021-03-08 20:25:56
【问题描述】:

对 customAction 毫无疑问

<Custom Action='CustomActionId.StopService2' After='CustomActionId.StopService1>REMOVE</Custom>

因此,此 REMOVE 标志将使此操作仅在卸载或升级/卸载/修复/重新配置时运行我的自定义操作

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    Windows 服务:不应通过自定义操作控制或安装 Windows 服务,而应通过内置 MSI 机制:ServiceInstallServiceControl。这些 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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多