如何强制修补程序中的文件更新(动态链接,未版本化) [英] How to force a file update in patch (dynamic link, unversioned)

查看:195
本文介绍了如何强制修补程序中的文件更新(动态链接,未版本化)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have several files failed to update in windows installer patch. They are dynamic link files, with file hash changes, but the MsiFileHash table "File_" has changed for each file, below is the same file in MisFileHash table: RTM fileA:_A0FB2DAA62D356E1B64EA457014BA886 0 543212956 662074909 -1730111711 -2096793600 Patch7 fileA: _490DC427E0D9E512E96D3E9BF2B317C7 0 -1371102532 -401194406 -232195904 525972747 Maybe this causes the update failure. So I ask, will any way to force the dynamic link component to update in patch? Thanks

推荐答案

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

A common reason for this is that the patch broke the component rules (for example by removing a component). A verbose log of the patch install would say something about SELMGR and component removal not supported. The patch update would go into advertised mode and fail to update anything. It would be useful to post the verbose log anyway to see if there is an entry about file replacement and whether an attempt was made to replace it and what it said (and this won't be there if component rules were broken).

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

The other issue is more obscure but is likely to cause problems. The primary key of the MsiFileHash (File_ field) table has changed. This implies that other primary keys in the new MSI have also changed. This is relevant:

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

但是那里的底线引用是重要的它是主键在包的版本之间不会改变,这是因为MSI是关系数据库,并且在不同版本的产品中更改密钥将导致不可预测的效果。

but the bottom line quote from there is what matters " It’s imperative that the primary keys are not changed between versions of the package. " and that's because the MSI is a relational database and changing keys in different versions of the product will lead to unpredictable effects.

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

There is no indication of what tool you are using to create the patch, but most of them don't typically cause either of these issues because they build the patch taking account of the structure of the RTM and the rebuilt MSI file.

这篇关于如何强制修补程序中的文件更新(动态链接,未版本化)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆