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

2023-11-23

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


Yes, 恢复旧的应用程序版本通过安装失败时的回滚实际上是Windows Installer 的内置功能,但您需要正确配置才能使其按您的要求工作。

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

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

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

后期重大升级也都是防止配置文件被恢复的方法升级期间恢复到原始安装状态。这是一个典型的问题,其中配置文件在安装后更改,在主要升级期间卸载,然后重新安装,给人的印象是它们已恢复,而实际上是重新安装的。

我写过关于Windows 安装程序回滚前。可能值得一读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Msiexec:安装失败时自动回滚到以前的版本 的相关文章

  • 如何在具有提升权限的 WiX 中创建的 MSI 中运行自定义操作?

    我有一个安装程序需要访问注册表并使用自定义操作复制和删除文件 在 Windows XP 中 安装程序运行良好 但在 Vista 和 7 中 安装程序显示错误 因为它无法访问文件夹 但如果我以管理员身份运行安装程序 则一切正常 因此 我需要安
  • 如何使用 WiX 将交互式用户添加到本地化 Windows 中的目录?

    如何添加瑞典语交互式用户 NT INSTANS INTERAKTIV 或英文交互用户 NT AUTHORITY INTERACTIVE 或任何其他本地化用户组write程序文件夹 ACL 的权限 这个问题实际上是 我如何使用安全对象 我无法
  • 不使用 powershell 远程安装 .msi?

    我们有一个多服务器系统我们需要在客户端安装 我想编写一个脚本 可以 关闭远程机器上的服务 卸载多台远程计算机上的软件 在多个远程计算机上安装 msi 文件 我曾挣扎过psexec and wmic做第 2 点和第 3 点 似乎必须有一种更简
  • MSI 与 nuget 包:哪个更适合持续交付?

    我们来讨论一下下面的话题 目前有一个应用程序正在使用熟悉的 xcopy 方法进行部署 这种方法使得管理依赖项 文件更新等变得困难 有一个想法是在一些软件包的帮助下开始应用程序部署 就像在 Linux 中借助RPM http en wikip
  • 如何检测正在运行的 MSI 安装 [重复]

    这个问题在这里已经有答案了 我正在寻找一种方法来检测 Windows Installer 安装是否已在进行中 到目前为止我发现的是 检查注册表项 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows C
  • 成功后动态改变EndDialog中的RTF内容

    多亏了这个question https stackoverflow com a 33679439 1076116 我能够执行自定义操作来临时更新和动态修改 MSI 数据库 简而言之 我正在做 CustomAction public stat
  • 检测是否安装了 SQL Server Compact Edition 3.5 SP2 x64?

    我正在构建一个安装程序 并且想要引导 SQL Server Compact Edition 3 5 SP2 问题是我正在寻找注册表项HKLM SOFTWARE Microsoft Microsoft SQL Server Compact E
  • ICE61:该产品应仅删除其自身的旧版本

    我正在关注第二个答案here https stackoverflow com questions 500703 how to get wix to update a previously installed version of a pro
  • 如何在 wix .wxs 文件中指定

    我想在 Wix 安装程序的 wix wxs 文件中将属性指定为受限属性
  • 如何为启动的 setup.exe 创建日志文件

    我继承了一些InstallShield InstallScript项目 我目前正在使用InstallShield 2009 当我运行 setup exe 时 我似乎无法创建日志文件 我需要指定哪些命令行选项 InstallShield 有一
  • WIX MSI 软件包卸载

    我正在使用 WIX 作为安装程序包 当我通过双击原始 msi 包卸载该包时 一切都很好 当我从控制面板卸载时 它会给我一个最小的用户界面卸载 我已在 MSI 中写入一个自定义操作 询问用户是否要卸载某些数据库等 最小 UI 卸载时不会发生这
  • Wix:动态添加功能

    我们正在使用 Wix 为我们的软件构建 msi 我们有一些要在目标机器上实现的组件 插件 每个客户端的插件都不同 我们想要做的是创建一个标准构建并修改 msi 包中的功能列表 有没有办法通过自定义操作动态更改功能列表 例如 从自定义操作中读
  • wix 3 安装程序:未解析的绑定时变量!(bind.fileVersion.Name.exe)

    我正在尝试使用 Wix3 中的绑定 bind fileVersion 即 3 11 1 由于某些原因 我收到以下错误消息 未解析的绑定时变量 bind fileVersion TestWix3 exe 我的目标是填写 产品 ID 行 特别是
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • 为什么最新的 Python 3.8.x 版本不提供 Windows 安装程序?

    我需要在Windows计算机上安装Python 3 8并希望使用最新的小版本3 8 12 https www python org downloads release python 3812 官方发布网页提供了源代码的 tarball 文件
  • 如何使用 Installshield 动态自定义 MSI 文件属性中的产品版本

    我正在使用 Installshield 2019 生成基本的 MSI 文件 我想自定义 Windows 资源管理器文件属性中显示的文件属性 在详细信息选项卡 gt 标题 主题 评论中 遗憾的是 而且奇怪的是 产品版本没有出现在我生成的 MS
  • 从 C# 调用 MsiEnumRelatedProducts 崩溃

    我在从 C 调用 MsiEnumRelatedProducts 时遇到了无穷无尽的麻烦 我尝试了 p invoke 定义的几种变体 但没有成功 out 和 ref 我认为问题在于最后一个参数 它是一个 LPTSTR 应该指向一个 39 个字
  • 创建 MSI 的最佳工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是设置项目创建的新手 现在我正在使用 Visual Studio 2008 为我的项目创建安装文件 msi 我对在安装向导中创建自己的自
  • 为什么我的应用程序会触发另一个应用程序的安装程序?

    当使用旧版 VB6 应用程序并在该应用程序中打开某些特定表单时 会弹出属于 Microsoft Navision 安装在同一台计算机上 的 Windows Installer 如附图所示 每次都会发生这种情况 但仅限于这台机器 VB6应用程
  • 如何查明已安装哪些产品 - 已安装较新的产品 MSI windows

    我可以通过 WIX 创建 MSI gt 我们将其安装在 IIS 上 发生了什么 我们已经在 1 8 上安装了某个版本的应用程序 然后我们安装了 99 0 版本只是为了测试目的 然后我们卸载了这个 99 版本 然后我尝试安装其他版本并获得 已

随机推荐