Windows安装程序修补程序失败 - 执行序列在第一次操作和安装过程重置后停止

时间:2014-07-23 17:42:20

标签: installer windows-installer installshield msp msi-patch

我看到我们在多个客户站点发现了一个不寻常的零星故障。最终的错误代码是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

我的问题是,是否有人知道导致安装过程的原因是什么?重置&#34;像这样,有什么我可以做的吗?正如我所说,这个补丁通常99%的时间安装。可以使用故障机器的完整日志:https://docs.google.com/document/d/1LK6HdIcetKOGqFbi5nGKAuDolvhZ3PcLxzJHv2wNDsQ/pub。 感谢。

回应评论的其他信息:

我们的产品将MSI用于Service Pack版本和针对点发布的补丁。每个补丁都是累积的,并使用MinorUpdateTargetRTM属性取代之前的所有补丁。它们主要用于更新应用程序文件。我们总是包含整个文件以提高可靠性,并且不使用位级补丁。基本MSI为46 MB,包含1778个文件(这是一个复杂的企业产品)。失败的补丁相当大,57 MB。它增加了240个新文件并更新了413个现有文件。

1 个答案:

答案 0 :(得分:1)

听起来你有效地使用了补丁,但是你肯定会破坏我的补丁的第一规则:它应该小于它的基础MSI

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

也许我错过了一些重要的事情?也许安装速度更快?一个创作良好的次要升级,或者不卸载并重新安装但只是取消注册旧版本的主要升级(RemoveExistingProducts的延迟排序)应该同样快。

尽管有多年的经验和部署专业知识,但我不是修补专家。我积极尝试最小化补丁使用,因为它通常比它的价值更麻烦。但是here is a post with some of my patching experiences

我很抱歉,如果这似乎没有答案,但我觉得这是一个有效的输入,因为你的补丁在57MB时似乎是不必要的,你必然已经有一个解决方法:完全更新MSI。