Windows 安装程序补丁失败 - 执行序列在第一个操作后停止并安装进程重置

2023-12-06

我发现我们的一个补丁在几个客户站点上出现了异常的零星故障。最终错误代码为 1648(找不到该组补丁的有效序列),这是因为尝试从其中一个补丁转换读取摘要信息流时出现错误 2219(无效的安装程序数据库格式)。但我怀疑这只是早期无声错误的副作用。我们的补丁都使用 MinorUpdateTargetRTM 属性,因此实际上没有什么可排序的,因为任何以前安装的补丁都会自动被取代。我们的客户通常操作数百台几乎相同的笔记本电脑,并且大多数都安装了此更新。在大多数情况下,只有一台设备无法更新。

日志的关键部分如下。初始化已完成,Windows 安装程序服务器进程开始执行执行序列。最后一个正常日志条目是“执行操作:ISSetupFilesExtract”。 ISSetupFilesExtract 是执行序列中的第一个操作。停顿了三分钟,然后看起来整个安装以某种方式重置并重新开始。下一个日志条目由客户端进程写入,通常服务器进程将继续运行执行序列。在安装结束之前,我不会期望看到来自客户端进程的另一个日志条目。我怀疑这里发生了某种灾难性故障,但我不知道它可能是什么。只有在发生这种神秘的重置之后,SequencePatches 才会失败。第一次就成功完成了。

MSI (s) (C4:58) [09:28:32:565]: Doing action: INSTALL
Action start 9:28:32: INSTALL.
MSI (s) (C4:58) [09:28:32:581]: Running ExecuteSequence
MSI (s) (C4:58) [09:28:32:581]: Transforming table InstallExecuteSequence.
MSI (s) (C4:58) [09:28:32:581]: Transforming table InstallExecuteSequence.
MSI (s) (C4:58) [09:28:32:581]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038 
MSI (s) (C4:58) [09:28:32:581]: Doing action: ISSetupFilesExtract

<-- What happened here?! -->

=== Verbose logging started: 7/21/2014  9:31:38  Build type: SHIP UNICODE 5.00.7601.00  Calling process: C:\MyCompany\Pwhc\Apps\AplPch.exe ===
MSI (c) (44:50) [09:31:38:192]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

我的问题是,有谁知道什么可能导致安装过程像这样“重置”,我能做些什么吗?正如我所说,这个补丁在 99% 的情况下都能正常安装。故障机器的完整日志可用:https://docs.google.com/document/d/1LK6HdIcetKOGqFbi5nGKAuDolvhZ3PcLxzJHv2wNDsQ/pub。 谢谢。

回复评论的附加信息:

我们的产品使用 MSI 来发布服务包,并使用补丁来发布单点版本。每个补丁都是累积性的,并通过 MinorUpdateTargetRTM 属性取代所有先前的补丁。它们主要用于更新应用程序文件。我们始终包含整个文件以提高可靠性,并且不使用位级补丁。基本 MSI 为 46 MB,包含 1778 个文件(这是一个复杂的企业产品)。失败的补丁非常大,有 57 MB。它添加了 240 个新文件并更新了 413 个现有文件。


听起来你确实在有效地使用补丁,但你肯定破坏了我的补丁的第一条规则:它应该小于其基本 MSI.

原因很简单明了补丁只是已经生效的更新的交付机制。因此,它只是一个比原始设置本身更复杂、更容易出错的容器,当它的大小超过原始 MSI 时,根本没有明显的理由使用该补丁吗?您可以直接运行完整的设置而不进行修改吗?事实上,您应该在出现问题的系统上进行尝试。

也许我错过了一些重要的事情?也许它安装得更快?精心编写的次要升级或不卸载并重新安装而只是取消注册旧版本(RemoveExistingProducts 的后期排序)的主要升级应该同样快。

尽管拥有多年的经验和部署专业知识,但我并不是修补专家。我积极尝试尽量减少补丁的使用,因为它通常带来的麻烦大于其价值。但这是我的一些修补经验的帖子.

如果这看起来根本没有答案,我深表歉意,但我觉得这是一个有效的输入,因为您的补丁在 57MB 下似乎非常不必要,而且您肯定已经有了解决方法:完整更新 MSI。

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

Windows 安装程序补丁失败 - 执行序列在第一个操作后停止并安装进程重置 的相关文章

随机推荐

  • DOCX4J 插入换行符

    我在 DOCX 中有一个变量 我想用一个值替换它 首先 该变量不是放置在行的开头 而是放置在一些选项卡之后 我的值是邮政地址 我希望街道和邮政编码 城市 在不同的行中具有相同的缩进 街道替换了该行中的变量 邮政编码位于新行中 如下所示 4
  • 显示 iPhone 键盘时调整 UIView 大小,如何操作? [复制]

    这个问题在这里已经有答案了 我将向您展示一个众所周知的 Whatsapp 的例子 当您触摸文本内部时 键盘会弹出 因此我必须向上移动或移动所有栏并将视图大小调整为一半 这样我仍然可以看到我正在输入的文本和发送按钮 阶段1 http www
  • 为什么使用共享库时 Linux 上的应用程序启动速度会变慢?

    在我正在开发的嵌入式设备上 启动时间是一个重要问题 整个应用程序由多个使用一组库的可执行文件组成 由于闪存空间有限 我们希望使用共享库 当编译并与共享库链接时 应用程序照常工作 并且闪存容量按预期减少 与链接到静态库的版本的区别在于应用程序
  • 如何为 Windows 编写 posix waitpid() 模拟?

    我想将我的linux代码移植到windows上 我不想使用 cygwin 或 mingw 我想通过 WinApi 来完成此操作 那么谁能帮我在windows下写waitpid 模拟呢 CreateProcess创建新进程的方式 它的输出是P
  • Javascript 中的 Mixin 和继承有什么实际区别?

    只是 模拟 多重继承是混合的唯一优点 Object assign MyClassA prototype MyMixinB 与继承 class MyClass extends MyClassB MyClassB class version o
  • 如何优雅地处理 maxRequestLength 异常?

    在我的 ASP NET MVC 如果有的话 v2 应用程序中 我有一个允许用户上传文件的页面 我已为我的应用程序配置了 maxRequestLength 以允许最大 25MB 的文件 作为测试 我向它发送了一个 500MB 的文件 该文件引
  • 从 javacard 小程序读取大文件

    我正在编写一个小程序 它存储 3 个不同大小的文件 5 Kb 7 Kb 和 11 Kb 我在小程序中存储文件没有任何问题 但是当我尝试读回它们时 我只能读取前两个 较小的文件 第三个文件抛出异常 javax smartcardio Card
  • 限制集合仅检索只读实体的最近条目

    User 实体可以有数千个 UserOperations 有时我不想检索 对于只读实体 所有内容 而只想检索 最近 10 个或未完成的 public class SimpleForm public class User EntityBase
  • 如何检查输入是否是数字并相应地调用函数?

    我的代码如下 我需要修改它 以便检查输入是否是数字 如果它不是数字 则必须显示一条消息 如下所示 请仅输入编号 如果输入是数字 则必须调用函数compare 我尝试了很多方法 包括使用isNAN 但似乎没有任何效果 有人可以帮忙吗
  • Matlab 重采样向量

    我目前正在尝试找到一种对向量重新采样的方法 例如 如果我有一个大小为 4 的向量 1 3 5 7 我想把它缩小到 3 号 这样我就可以 1 4 8 或类似的东西 放大同样 但方式相反 我已经搜索并找到了该功能Interp and Decim
  • 如何在 BlueJ“创建对象”对话框中输入 LocalDate 值

    我不想将日期格式化为 YYYY MM DD 或 dd MM YYYY 我问的是 LocalDate 的文字格式 我刚刚开始学习 Java 正在使用这个名为 BlueJ 的 IDE 我想创建一个测试方法 The screenshot will
  • Selenium WebDriver — 启动 Chrome,并在控制台面板中打开 DevTools

    我知道如何在打开 DevTools 的情况下启动 Chrome 所以please不要告诉我它是重复的如何使用 JAVA 在 Selenium WebDriver 中打开 Chrome 开发者控制台 我正在尝试将开发工具打开到特定面板 默认情
  • Firefox 的 geo.wifi.url 的 https://www.google.com/loc/json 未使用?

    我使用网络嗅探器检查了 Firefox 发出的所有请求http html5demos com geo 根据我的 Firefox 根据 geo wifi uri 条目的地理定位服务是https www google com loc json
  • 现在我们在 java 中有了注释,xdoclet 是遗留的吗?

    我偶然发现了 xdoclet 项目 发现它很受欢迎 所以问题是 现在我们在 java 中有了注释 xdoclet 是遗留的吗 或者 xdoclet 是否有一些我没有看到 理解的内容 XDoclet是一个注释实现JavaDoc 任何可以做的事
  • React-router 应用程序部署在不同位置(子目录)

    我有一个反应路由器应用程序 我必须将其部署在不同的位置 子目录 因此基本名称会改变 例如 它应该具有以下路径 生产 appname env1 appname env2 我想使用浏览器历史记录 所以我实现了BrowserRouter来自rea
  • Asp.Net core 项目缺少“包含在项目中”选项

    我在 VS 2015 Update 3 中创建了一个 Asp Net 核心项目 并使用 npm 添加了 twitter bootstrap 当我尝试将 bootstrap 文件夹包含到项目中时 我在上下文菜单中找不到 包含在项目中 选项 我
  • 如何在 Groovy 中导入 jenkins-api?

    我有一个想要编辑的小型 Groovy 脚本 但在 Groovy 中的依赖项管理方面存在问题 我是 groovy 的新手 如果这个问题有点学习 容易回答 请提前抱歉 我用IntelliJ作为想法 Grab group org jenkins
  • 为什么CSS浮动不会改变后面div的宽度?

    我认为float left 它将把后续元素推到左边而不是新行 在下面的示例中 我希望第二个 div 开始于第一个 div 的右侧 但正如您在下面的 jsfiddle 中看到的 它仍然跨越整个宽度 另一方面 内容神奇地从它应该的地方开始 是否
  • grab_set() 函数在 tkinter 中不起作用

    我之前也问过同样的问题 这里有一个链接 如果单击父窗口 则 闪烁 提示窗口 Tkinter 但它被标记为重复 请帮助我处理我的代码 因为即使经过多次尝试 我也无法在我的代码中实现grab set 建议我提出一个新问题 所以就在这里 My C
  • Windows 安装程序补丁失败 - 执行序列在第一个操作后停止并安装进程重置

    我发现我们的一个补丁在几个客户站点上出现了异常的零星故障 最终错误代码为 1648 找不到该组补丁的有效序列 这是因为尝试从其中一个补丁转换读取摘要信息流时出现错误 2219 无效的安装程序数据库格式 但我怀疑这只是早期无声错误的副作用 我