我正在使用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
失败时回滚卸载)?
答案 0 :(得分:1)
Condition元素嵌套在Product元素下时,引用LaunchConditions表。
您需要在LaunchConditions action之前安排自定义操作,以便设置该属性并进行评估。可以将其视为AppSearch action的扩展。