如果正在卸载已安装的功能,如何在WiX中执行自定义操作?

时间:2010-02-02 18:58:43

标签: wix windows-installer custom-action

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

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

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

2 个答案:

答案 0 :(得分:16)

尝试

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

请参阅MSDN了解details条件语法和examples

答案 1 :(得分:-3)

听起来自定义操作已被破坏,而且无法正确处理缺少的资源。

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

如果用户在不卸载整个应用程序的情况下删除某个功能,会发生什么?你可以更好地长期修复CA.