2

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

4

1 回答 1

4

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

相反,您需要在前后 InstallInitialize某个时间安排您的自定义操作,以使其出错并导致回滚。此外,修改机器状态的自定义操作应该是. MSI SDK 中的这个主题是一个很好的起点,然后可以阅读有关它的主题。 InstallFinalizedeferred

如果您想查看编写自定义操作方式的示例,我建议您查看src\ca\wixca\dll. 根据 MSI SDK,许多不同类型的自定义操作以我希望是“正确”的方式做事。

于 2013-04-04T12:37:05.620 回答