回滚自定义作

当安装程序处理安装脚本时,它会同时生成回滚脚本。 除了回滚脚本,安装程序还会保存安装过程中删除的每个文件的副本。 这些文件保存在隐藏的系统目录中。 安装完成后,将删除回滚脚本和保存的文件。 如果安装失败,安装程序将尝试回滚在安装过程中所做的更改,并还原计算机的原始状态。

尽管通过将行插入数据库表来计划系统作的自定义作由安装回滚来逆转,但直接更改系统的自定义作或向其他系统服务发出命令的自定义作始终不能由回滚来撤消。 回滚自定义作是安装程序仅在安装回滚期间执行的作,其用途是撤消对系统所做的更改的自定义作。

回滚自定义作是一种 延迟执行自定义作,因为它的执行在安装序列期间调用时延迟。 它不同于常规延迟自定义作,因为它仅在回滚期间执行。 回滚自定义作必须始终位于作序列中回滚的延迟自定义作之前。 回滚自定义作还应处理延迟自定义作在执行期间中断的情况。 例如,如果用户在执行自定义作时按“取消”按钮。

请注意,回滚自定义作无法异步运行。 请参阅 同步和异步自定义作

回滚自定义作的补充是 提交自定义作。 安装程序在安装序列期间执行提交自定义作,将自定义作复制到回滚脚本中,但在回滚期间不执行该作。

请注意,回滚自定义作可能无法删除通过提交自定义作所做的所有更改。 尽管安装程序同时将回滚作和提交自定义作写入回退脚本,但提交自定义作仅在安装程序成功处理安装脚本后运行。 提交自定义作是在回滚脚本中运行的第一个作。 如果提交自定义作失败,安装程序将启动回滚,但只能回滚已写入回退脚本的作。 这意味着,根据提交自定义作,回滚可能无法撤消作所做的更改。 可以通过创作自定义作来忽略返回代码来忽略提交自定义作中的失败。

当安装程序运行回滚自定义作时,它将设置的唯一模式参数是MSIRUNMODE_ROLLBACK。 有关运行模式参数的说明,请参阅 MsiGetMode

通过将选项标志添加到 CustomAction 表的 Type 字段,可以指定回滚自定义作。 有关指定回滚自定义作的选项标志,请参阅 自定义作 In-Script 执行选项

回滚和提交自定义作在禁用回滚时不会运行。 如果包作者需要这些类型的自定义作才能正确安装,则应在禁用回滚时阻止安装继续的条件中使用 RollbackDisabled 属性。 有关如何禁用回滚的信息,请参阅 回滚安装(Windows Installer)