8

我有一个 WiX 安装程序,它具有需要在卸载时执行的每个功能的自定义操作。现在我遇到了一个问题,无论该功能是否由用户实际安装,操作都会执行。自定义操作失败,因为他们期望某些资源存在,然后整个安装陷入中断状态。

当且仅当其相关功能被卸载时,运行自定义操作的正确方法是什么?如果有帮助,我在下面包含了我目前正在使用的代码段。

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND (&FeatureName<=2)]]></Custom>
4

2 回答 2

18

尝试

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles">
   <![CDATA[(NOT UPGRADINGPRODUCTCODE) 
             AND (&FeatureName=2) AND (!FeatureName=3)]]>
</Custom>

有关条件语法和示例的详细信息,请参阅 MSDN

于 2010-02-03T17:54:12.480 回答
-3

听起来自定义操作被破坏并且没有正确处理丢失的资源。

如果用户手动删除文件,CA 将如何处理?如果用户删除应用程序文件夹,然后尝试通过 ARP 将其删除,会发生什么情况?

如果用户只是删除了一项功能,而不卸载整个应用程序,会发生什么?长期修复 CA 会更好。

于 2010-02-03T03:41:43.727 回答