0

有谁知道当用户单击“取消”时如何使 InstallAware 回滚数据库?与 InstallShield 不同,我没有看到任何方法来指定单个脚本何时运行。

4

1 回答 1

1

我不认为 InstallAware 能够回滚数据库事务。我没有在他们的 MS SQL Server 命令中看到对 SQL Server 回滚的任何内在支持。如果可能的话,您需要编写自己的回滚脚本。

如果用户在初始对话框中取消安装,则 MSICode 中通常有一个部分具有 IF 块。它看起来像这样

if variable WIZARD Equals CANCEL
    Terminate Installation
end

这发生在 Windows Installer 引擎实际执行安装之前。如果您尚未执行数据库脚本,则无需执行任何操作。如果您在此之前应用了数据库脚本,则需要提供回滚脚本(如果可能)并在该块中执行它,但在终止安装之前。

如果您在安装时取消安装,您将获得另一次回滚更改的机会。当用户在安装过程运行时(即在用户做出任何选择之后)按下取消按钮时,InstallAware 变量 SUCCESS 将被设置为 CANCEL。您可以检查该条件并执行回滚脚本。通常有一个代码块根据 SUCCESS 的值做各种事情,你可以在那里添加你的代码。

您总是可以让您的 SQL 脚本成为 InstallAware 在安装过程中执行的最后一个命令。这将消除处理取消的需要。

于 2010-05-17T18:36:47.857 回答