如果安装失败,则回滚事件

时间:2013-04-04 06:13:07

标签: wix wix3.5

我在InstallFinalize之后安排了自定义操作。当我运行安装程序时,它失败了,我注意到我收到错误屏幕,安装失败并且没有对我的计算机进行任何更改,但是如果我再次运行安装程序,它可以选择修复,更改或删除。我认为这是因为没有触发回滚事件。我怎样才能实现呢?

1 个答案:

答案 0 :(得分:4)

InstallFinalize操作是将安装事务提交到计算机的时间。在该点之后(或InstallInitialize之前)发生的任何事情都发生在事务之外。这意味着它们无法回滚。

相反,您需要在 InstallInitialize InstallFinalize之前之后的某个时间安排自定义操作,以使其出错并导致回滚。此外,修改机器状态的自定义操作应为deferredThis topic in the MSI SDK是一个很好的起点,然后阅读它周围的主题。

如果您想查看编写自定义操作的示例,我建议您查看src\ca\wixca\dll中WiX工具集中的一些示例。根据MSI SDK,许多不同类型的自定义操作以我希望的“正确”方式执行。