【问题标题】:Custom action only on install, but not on update and not on uninstall自定义操作仅在安装时,而不是在更新时,而不是在卸载时
【发布时间】:2014-10-30 01:22:07
【问题描述】:

我使用的是 Wix 3.8。

首先,我创建了一个安装程序 (.msi),它在安装过程中执行自定义操作(出于测试目的,它只显示一条消息):

产品元素:

<Product Id="PUT-GUID-HERE" Name="MyProduct" 
         Version="1.0.1.100" Manufacturer="Foobar Company"
         UpgradeCode="PUT-GUID-HERE">

自定义操作

<CustomAction Id="Message1" Script="vbscript">
<![CDATA[
MsgBox("First Install?")
]]>
</CustomAction>

<InstallExecuteSequence>
<Custom Action="Message1" 
        Before="InstallInitialize">NOT Installed AND NOT REMOVE</Custom>

现在,当我执行我的 .msi 文件时,该消息将显示在我的安装中:

接下来,我修改我的产品代码并增加我的版本号以构建更新:

产品元素:

<Product Id="PUT-GUID-HERE" 
         Name="MyProduct" Version="1.0.2.100" 
         Manufacturer="Foobar Company" 
         UpgradeCode="PUT-GUID-HERE">

关于NOT Installed AND NOT REMOVE 我期望的条件,当我执行更新时不会出现消息框。但确实如此:

仅在安装时执行而不在更新时执行的自定义操作的正确条件是什么?

【问题讨论】:

    标签: wix windows-installer wix3.8


    【解决方案1】:

    最后它符合以下条件:

    NOT (WIX_UPGRADE_DETECTED OR UPGRADINGPRODUCTCODE) AND NOT (REMOVE="ALL")
    

    使用此条件,我的操作仅对安装有反应,但对更新和卸载没有反应。

    重要提示:安装程序和更新的 .msi 必须包含该条件。

    【讨论】:

    • 该条件可能不正确,因为它不包括维修,请注意,尽管您可能听说过,但您并不能真正保证您永远不会得到维修。 IMO 您需要的条件只是一个普通的旧 "未安装" 。然后它就再也不会运行了。
    • @PhilDW:您对“未安装”的建议是错误的。当我进行更新时,将执行该操作→我已经测试过。
    • “更新”是什么意思?在补丁、主要升级、修复和次要更新期间,始终设置已安装属性,因为该 ProductCode 定义的产品仍处于安装状态。这种方式我用过很多次了,所以你的更新可能会有些不同。
    【解决方案2】:

    注意自定义操作的条件,它们很难正确处理。这是一个 MSI Conditions Cheat Sheet 来帮助你。我没有测试过这些条件——测试是唯​​一的保证。这里是another sheet with more advanced info(推荐)。

    这是一个有趣的帖子:How to add a WiX custom action that happens only on uninstall (via MSI)?

    您建议的情况看起来不错,但请看一下表格。此外 - 补丁具有特定于补丁的属性,例如 PATCH 和 MSIPATCHREMOVE。根据需要,对自定义操作使用这些条件,使它们在补丁期间运行或不运行。如果您打算使用补丁,我认为您应该将自定义操作设置为在补丁期间运行。

    我为您消除了硬编码指南。小心发布指南 - 通过简单的复制和粘贴,您的独特指南不再那么独特。所有硬编码的 guid 都可能导致真正的问题。

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 2010-10-06
      • 2019-04-19
      • 2020-04-26
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      相关资源
      最近更新 更多