根据模式-WIX执行自定义操作

| 我们已经为我们的应用程序创建了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进行卸载。     
已邀请:
您可以尝试以下条件: ActionForInstall:
REMOVE <> \"ALL\"
ActionForUninstall
REMOVE = \"ALL\"
    
通常,使用产品级别属性(例如未安装和REMOVE = \“ ALL \”)的条件无法满足您的期望。通常最好使用组件动作状态,例如 $ COMPONENTNAME = 3 <-本地安装的组件 $ COMPONENTNAME = 2 <-以前已安装组件,现在已被删除 通常,这将涵盖您的所有安装,卸载,维护,修复,升级方案。 您可以使用\“&\”运算符对功能执行类似的操作,但通常使用组件\“ $ \”更好,因为组件是物理的并且可以与一个或多个仅逻辑的功能相关联。 而且,如果您真的想将其提升到一个新的水平,则可以(应该)使用对Component表的外键联接来驱动您的自定义操作。在这种情况下,您的自定义操作始终会触发,然后查询表并评估组件操作状态,以决定需要安排哪些操作。 条件语句语法(Windows)     

要回复问题请先登录注册