【发布时间】:2011-08-05 06:52:44
【问题描述】:
我们已经为我们的应用程序创建了 WIX 安装程序。我们面临的问题是: 我们已经定义了两个不同的自定义操作(比如 ActionForInstall 和 ActionForUninstall),我们希望在以下情况下执行这些操作: ActionForInstall :应该在安装、产品升级、维护模式时运行(用于修复和修改) ActionForUninstall : 应该只在卸载时运行。
但我们无法设置适当的条件。你可以参考代码:
<Custom Action=ActionForInstall After='InstallFinalize' >
(NOT Installed) OR (Installed AND ((MaintenanceMode = "Modify") OR (MaintenanceMode = "Repair")) AND (NOT (MaintenanceMode = "Remove"))) OR ((UPGRADINGPRODUCTCODE) AND NOT(REMOVE ~= "ALL"))
</Custom>
<Custom Action=ActionForUninstall Before='InstallFinalize'>
Installed AND NOT UPGRADINGPRODUCTCODE
</Custom>
请让我们知道我们做错了什么。即使卸载,上面的代码也会调用 InstallFinalize。
【问题讨论】:
-
有用的备忘单:flexerasoftware.com/webdocuments/PDF/…。我喜欢通过将 NOT PATCH 添加到现有条件列表以及 NOT UPGRADINGPRODUCTCODE 以禁用它们以进行重大升级来禁用 MSI 补丁运行的自定义操作。
标签: wix windows-installer custom-action