Msiexec:在安装失败时自动回滚到以前的版本

时间:2011-11-16 16:27:44

标签: windows-installer installshield msiexec

在静默模式下使用msiexec安装.MSI文件时,是否可以将其自动化,以便在安装失败时回滚到以前的版本?假设在安装时已经安装了较旧的应用程序版本。

3 个答案:

答案 0 :(得分:2)

是的,在安装失败时通过回滚恢复旧的应用程序版本实际上是Windows安装程序的内置功能,但您需要正确配置以获取它可以按你的要求工作。

Windows Installer回滚将按您的要求运行,如果您使用: 1)次要升级 2)正确排序的主要升级成功更新所有文件后卸载旧版本。如果在安装新版本之前将主要升级设置为卸载旧版本,则由于卸载已经结束,因此回滚不可用,因此如果新安装程序失败并回滚,则新安装程序将不会保留任何内容。

重要:对于次要升级以及在主要升级中延迟卸载旧版本以使其正常工作,必须100%准确地遵循所有 MSI组件规则

在考虑更新后卸载旧版本的主要升级时,您可以将其视为修补操作,而无需将更新打包为修补程序。 Windows Installer实际上会在旧版本和新版本上运行差异,然后仅实现所需的更改,而不会触及应用程序的其余部分。根据应用程序结构和文件数量,安装速度可以明显加快

延迟排序的主要升级也是在升级期间防止配置文件恢复到原始安装状态的一种方法。这是一个经典问题,其中配置文件在安装后更改,在主要升级期间卸载,然后重新安装,给人的印象是它们实际上刚刚重新安装时会被还原。

我之前写过关于Windows Installer Rollback的文章。可能值得一读。

答案 1 :(得分:1)

不,这是不可能的。在安装新版本之前,major upgrade会卸载旧版本。因此,当新安装失败时,旧版本已被删除。

答案 2 :(得分:1)

有可能但它涉及更改升级顺序,这并非总是很容易实现。您应该在InstallExecute操作

之后移动RemoveExistingProducts

http://msdn.microsoft.com/en-us/library/windows/desktop/aa371197(v=vs.85).aspx