【问题标题】:Extract product code from KB hotfix to use in bootstrapper从 KB 修补程序中提取产品代码以在引导程序中使用
【发布时间】:2013-04-11 13:30:55
【问题描述】:

我需要将 KB Hotfix 添加到我的应用程序的先决条件中,我将通过为其创建引导程序包来实现。

首先,我需要检查它是否已经安装,以便我可以绕过它。

我需要产品代码在InstallCheck 中添加新的 MsiProductCheck,然后检查其值,如果已安装则绕过它。

可以将 MsiProductCheck 与 KB 修补程序一起使用,还是应该使用另一个 InstallCheck

问候

【问题讨论】:

  • 尝试安装它。如果已经安装,安装程序将不执行任何操作。检查特定 KB 是不可靠的,因为该 KB 可能已被取代。
  • 我需要绕过它,这样我才能跳过它的下载
  • 您可以use scripts like this one 查看需要哪些更新。如果您尝试检查是否安装了特定 KB,它最终将始终返回“no”,因为它将被汇总到服务包或类似的东西中,此时 KB 已过时。
  • 如果我这样做了,我需要使用外部检查,这是否意味着我不能使用“MsiProductCheck”来确定是否安装了该修补程序,我认为应该有一些方法可以使用包内的“Parameterinfo.xml”文件以获取其“产品代码”并为其创建“MsiProductCheck”或其他安装检查..
  • 这假定用户在 GDR 路径上。如果用户已转到 LDR 路径,则较高版本号的 GDR 更新可能没有来自较低编号的 LDR 更新的所有修复。维修很复杂。

标签: deployment windows-installer clickonce bootstrapper


【解决方案1】:

有许多不同类型的 KB。

如果你不想安装它,而且你对微星有点了解,当然你可以找到ProductCode,如果它是微星KB。

两种常见的类型:

KB 文件的后缀为 .exe - 其中包括一个 .msp(补丁)文件。您可以使用解包器用鼠标右键打开 .exe,例如7zip(不要双击,它将安装它)。然后使用像 Insted (google for it)这样的工具来查看 .msp 文件。 但是补丁没有自己的 ProductCode,它们有自己的 GUID,并且补丁完整的 MSI 有自己的 ProductCode。对于 MSI 专家来说,这些东西可能更多。两个 GUID 都在摘要信息中,这不是普通表。 我不知道“MsiProductCheck”来判断,你必须做什么才能使用这个信息。

KB 文件有后缀 .msu(是的,不是 .msi)- 然后,您可以使用任何 MSI 编辑器,如 Orca(在平台 SDK 中)或 Insted(再次)阅读 ProductCode。看看属性表,就在那里。

大多数时候不推荐依赖 ProductCodes。如果您确定,您确切地想要那个 KB 作为先决条件,没关系。对于知识库以外的其他东西,我根本不建议这样做。

更好:如果可能,我会搜索 KB 执行的文件/注册表更改,并自己在程序中使用它(例如文件版本或注册表 GUID)来检查它是否已安装。文件版本(如果更改)是一种很好的做法,因为您不仅仅依赖于一个修补程序,例如下次更改包含在 ServicePack 或新的 Windows 版本等中时。

我已经完成了诸如编写程序之类的工作,以确保根据不同的 Windows 版本满足许多不同的先决条件,我可以说,要做到完美,有时它是一项艰苦的工作,你可以花费数周甚至数月的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多