我们为我们的应用程序创建了WIX安装程序。我们面临的问题是: 我们已经定义了两种不同的自定义操作(比如ActionForInstall和ActionForUninstall),我们希望在以下情况下执行: ActionForInstall:应该在安装,产品升级,维护模式(用于修复和修改)时运行 ActionForUninstall :只能运行卸载。基于模式执行自定义操作 - WIX
但我们无法设置适当的条件。您可以参考代码:
<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进行卸载。
有用速查表:http://www.flexerasoftware.com/webdocuments/PDF/IS-CHS-Common-MSI-Conditions.pdf。我喜欢通过将NOT PATCH添加到现有条件列表以及禁用UPGRADINGPRODUCTCODE来禁用它们以进行主要升级,从而禁用MSI修补程序运行的自定义操作。 – 2014-05-28 00:37:01