我在几个客户站点看到我们的一个补丁出现不寻常的零星故障。最终的错误代码是 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 个现有文件。