当前位置:首页 > 技术 > 正文内容

Windows 更新包解析:自解压、安装引擎与补丁 API

访客 技术 2026年10月1日 7

附录 A:感知 IPD 的更新包

参考:US 2005/0022175 A1 - 2005 年 1 月 27 日

参考:KB 828030 - 无法查看或提取 Windows 产品更新包中的更新文件

示例:WindowsXP-KB824146-x86-ENU.exe

  • 自解压模块:31,744 字节 (SFXCAB 5.3.18.6)
  • CAB 文件:1,504,547 字节 (附加 5 字节, crc32 0xFFFFFFFF, 对齐至 0x16F600)
  • Authenticode 签名:6,944 字节
  • 结构:_sfx_manifest_ <- _sfx_.dll (mspatcha.dll 5.2.9354.0)

示例:WindowsServer2003-KB828035-x86-ENU.exe

  • 自解压模块:33,792 字节 (SFXCAB 5.4.1.0)
  • CAB 文件:334,195 字节
  • Authenticode 签名:6,760 字节
  • 结构:_sfx_manifest_ <- _sfx_.dll (mspatcha.dll 5.2.3790.83)

附录 B:自解压压缩文件 (SFX CAB)

注意:CABSDK (Cabinet Software Development Kit)

SFXCAB (Self-Extracting Cabinet)

示例:WindowsXP-KB824105-x86-ENU.exe (参考:2F0rq9sJ)

  • SFX 模块:31,744 字节 (SFXCAB 5.3.18.6)
  • CAB 文件:307,456 字节
  • Authenticode 签名:6,944 字节
  • 执行流程:xpsp1hfm.exe (5.3.0018.6) -> update.exe (5.3.0018.6), spuninst.exe (5.3.0018.6) <- update.inf, updater.ver, KBnnn.cat

示例:Q320206_W2K_SP4_X86_EN.exe

  • SFX 模块:23,040 字节 (1.16.118.0)
  • CAB 文件:164,884 字节
  • Authenticode 签名:6,672 字节
  • 执行流程:update.exe (5.2.0002.2) <- update.inf, updater.ver, Qnnn.cat

示例:Q315000_WXP_SP1_x86_ENU.exe

  • SFX 模块:23,040 字节 (1.16.118.0)
  • CAB 文件:568,929 字节
  • Authenticode 签名:6,760 字节
  • 执行流程:update.exe (5.1.2600.22) <- update.inf, update.ver, sp1.cat

示例:Q249599_W2K_SP1_X86_en.EXE

  • SFX 模块:22,016 字节 (1.10.101.0)
  • CAB 文件:242,438 字节
  • Authenticode 签名:5,142 字节
  • 执行流程:hotfix.exe (5.0.2195.1093) <- hotfix.inf

IExpress:WEXTRACT (Win32 Cabinet Self-Extractor)

示例:274548USA8.EXE,CAB 文件位于 .rsrc/RCDATA/CABINET,运行程序 274548UP.INF + ADVPACK.DLL。

; 使用 rundll32.exe 调用 setupx.dll 的 InstallHinfSection 函数
; InstallHinfSection <节名> <重启模式> 
; 高级 INF 包安装程序 (ADVPACK)
rundll32.exe %s,InstallHinfSection %s 128 %s
rundll32.exe %sadvpack.dll,DelNodeRunDLL32 "%s"

注意:IEAK (Internet Explorer Administration Kit)

注意:涉及的 DLL 包括 ADVPACK.DLL, SETUPAPI.DLL, SETUPX.DLL。

附录 C:安装程序引擎

  • KB 184305:如何使用 Hotfix.exe 安装和移除热修复
  • KB 197147:IExpress 软件更新包的命令行开关
  • KB 262841:Windows 软件更新包的命令行开关
  • KB 814411:热修复包不包含调试符号文件
  • KB 816915:Microsoft Windows 软件更新包的新文件名方案
    • 格式:ProductName-KBArticleNumber-Option-Language.exe,发布于 2003 年 4 月
  • KB 824687:Microsoft 软件更新包的命令行开关
  • KB 902093:如何读取 Windowsupdate.log 文件 (2005 年版)
  • KB 934307:Windows 更新独立安装程序 (wusa.exe) 详解
update.exe 命令行参数
版本 5.1.2600.22 (xpclnt_qfe.010827-1803)

版本 5.3.24.3
  /help, /passive, /quiet, /norestart, /forcerestart, /verbose, /extract
版本 5.4.15.0
  /forceappsclose, /integrate:path
版本 6.1.22.0
  /warnrestart, /promptrestart, /nobackup, /overwriteoem, /log

附录 D:PA19 - PatchAPI

参考:MSDN 链接 1

参考:MSDN 链接 2

头文件:patchapi.h

  • 包含于 Windows Platform SDK, Microsoft Installer SDK

DLL:mspatcha.dll

  • MS Office 2000, INSTMSI.EXE (1.0.5104.0), mspatcha.dll (1.94.319.0)
  • Windows 2000, MSI.DLL (1.10.1029.0), mspatcha.dll (1.94.319.0)

DLL:mspatchc.dll

  • Windows Installer 1.0 SDK, MsPatchC.dll (1.94.319.0), MsPatchC.lib, MPatch.exe, APatch.exe
  • Windows Installer 1.2 SDK, MsPatchC.dll (1.97.324.0), MsPatchC.lib, MPatch.exe (1.94.319.0), APatch.exe (1.94.319.0)
  • Windows Server 2003 SP1 Platform SDK, MsPatchC.dll (5.2.3760.0), MsPatchC.lib

附录 E:PA30 - MSDELTA

参考:MSDN 链接 1

参考:MSDN 链接 2

参考:Vista 操作系统

参考:KB 927374:适用于 Windows XP 和 Windows Server 2003 的 Microsoft 压缩客户端包 1.0

DLL:msdelta.dll

  • 版本:6.0.6000.16386 (文件标识:3PQMtVDh)
  • 版本:6.0.6001.18000

注意:ApplyDeltaA/W 函数:如果指定的差量是通过 PatchAPI 创建的,并且设置了 DELTA_APPLY_FLAG_ALLOW_PA19 标志,MSDelta 将调用 PatchAPI 来应用该差量。

资源链接

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。