我有一个链式安装,安装3 msis。如果其中一个Msi软件包安装失败,则之前的软件包安装将无法回滚。我已确保不更新DisableRollback和Vital等属性,其默认值分别为no和yes。我在所有具有Execute属性作为回滚的msis中都有一个特定的习惯。它适用于msi软件包失败,但之前安装的软件包没有回滚。我是否必须做任何特定的回滚才能工作?
<Chain>
<MsiPackage Id="1".../>
<MsiPackage Id="2".../>
<MsiPackage Id="3".../>
</Chain>
编辑:我现在意识到每个软件包的Permanent属性都设置为yes。一旦我将其设置为“否”,它就会卸载它没有执行的组件。这让我质疑,永久属性有什么意义。我确实看到了wixtoolset文档,但我不明白的是Permanent,Vital和DisableRollback属性是如何工作的。保持问题可以回答这些问题。
答案 0 :(得分:0)
使用RollbackBoundary并将其放在Chain所需的位置。
<Chain>
<RollbackBoundary />
<MsiPackage Id="1".../>
<MsiPackage Id="2".../>
<MsiPackage Id="3".../>
</Chain>