如何在补丁中强制文件更新(动态链接,无版本)

时间:2016-03-25 06:28:14

标签: windows deployment windows-installer installer patch

我在Windows安装程序补丁中无法更新多个文件。它们是动态链接文件,文件哈希更改,但MsiFileHash表“文件_"已更改每个文件,下面是MisFileHash表中的相同文件: RTM fileA:_A0FB2DAA62D356E1B64EA457014BA886 0 543212956 662074909 -1730111711 -2096793600 Patch7 fileA:_490DC427E0D9E512E96D3E9BF2B317C7 0 -1371102532 -401194406 -232195904 525972747 也许这会导致更新失败。 所以我问,有没有办法强制动态链接组件在补丁中更新? 感谢

1 个答案:

答案 0 :(得分:0)

这样做的一个常见原因是补丁打破了组件规则(例如通过删除组件)。补丁安装的详细日志会说明SELMGR和组件删除不受支持。补丁更新将进入广告模式,无法更新任何内容。无论如何发布详细日志以查看是否存在关于文件替换的条目以及是否尝试替换它以及它所说的内容(如果组件规则被破坏,这将不存在)将是有用的。

另一个问题更加模糊,但很可能会引发问题。 MsiFileHash(File_ field)表的主键已更改。这意味着新MSI中的其他主键也已更改。这是相关的:

https://blogs.msdn.microsoft.com/windows_installer_team/2007/03/07/arbitrary-labels-used-as-primary-keys-must-not-be-changed-between-versions/

但是从那里得到的底线是重要的“必须在包的版本之间更改主键。”这是因为MSI是一个关系数据库,并且在不同版本的产品中更改密钥将导致不可预测的影响。

没有迹象表明您使用什么工具来创建补丁,但是大多数工具通常不会导致这些问题,因为它们构建了补丁,同时考虑了RTM的结构和重建的MSI文件。