WIX:使用条件停止卸载?

时间:2012-09-02 17:10:03

标签: wix windows-installer

我正在使用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失败时回滚卸载)?

1 个答案:

答案 0 :(得分:1)

Condition元素嵌套在Product元素下时,引用LaunchConditions表。

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