【问题标题】:WIX: Using a condition to stop uninstall?WIX:使用条件停止卸载?
【发布时间】:2012-09-02 17:10:02
【问题描述】:

我正在用 DLL 中定义的自定义操作在 WiX 中编写安装程序文件。自定义操作在卸载时运行,如果失败,我希望它停止卸载过程并回滚。该操作不会影响系统,因此我可以在InstallInitialize 之前调用它,因此它不应该有其他更改可以撤消。

有人告诉我,如果我为自定义操作定义了一个属性,那么我可以使用condition 来停止卸载过程,如下所示:

<SetProperty Id="CA_mine" 
             Value="No" Sequence="execute" 
             Before="CA_mine">
  Installed AND remove=ALL
</SetProperty> 
<CustomAction Id="CA_mine" BinaryKey="BIN_mine" DllEntry="mine" Execute="immediate"/>
<InstallExecuteSequence>
  <Custom Action="CA_mine"
          Before="InstallInitialize">
    Installed AND remove=ALL      
  </Custom>
</InstallExecuteSequence>

<Condition>
  NOT (Installed AND remove=ALL)  OR [CA_mine] = "No"
</Condition>

如果我想停止卸载,mine 将属性 CA_mine 设置为“是”。

这还能用吗?何时评估 condition 标签?有没有更简单的方法来实现我的目标(mine 失败时回滚卸载)?

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    Condition 元素嵌套在 Product 元素下时,指的是 LaunchConditions 表。

    您的自定义操作需要在LaunchConditions action 之前安排,以便设置属性并可用于评估。将其视为AppSearch action 的扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多