文章编号: 296861 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文介绍了如何在只重新启动一次的情况下安装多个使用 Hotfix.exe (Microsoft Windows NT 4.0) 或 Update.exe(Microsoft Windows 2000、Microsoft Windows XP 或 Microsoft Windows Server 2003)的 Windows 产品更新(例如,关键更新、安全修补程序或修补程序)。本文面向管理员和 IT 专业人员。您可以安装单独使用 Hotfix.exe 或 Update.exe 的 Windows 产品更新,也可以安装联合使用 Windows(带有或不带有 Service Pack)与 Hotfix.exe 或 Update.exe 的 Windows 产品更新。

注意:本文中介绍的过程对于不使用 Hotfix.exe 或 Update.exe 作为安装程序的产品更新不适用。例如,Windows NT 4.0、Windows 2000 和 Windows XP 的 Internet Explorer 更新使用基于 INF 的安装而不是 Update.exe。因此,您无法使用此过程在只重新启动一次的情况下在 Windows NT 4.0、Windows 2000 或 Windows XP 上安装多个 Microsoft Internet Explorer 更新。因为 Windows Server 2003 的 Internet Explorer 更新使用 Update.exe 作为安装程序,所以您可以使用此过程安装它们。

有关这些主题的其他信息,请访问下面的 Microsoft 网站:

Windows 2000
Microsoft Windows 2000 修补程序安装和部署指南
http://technet.microsoft.com/zh-cn/library/cc750542.aspx
Windows XP
Microsoft Windows XP Service Pack 2 更新的安装和部署指南
http://technet.microsoft.com/zh-cn/library/bb457071.aspx
Windows Server 2003 和 Windows XP Professional x64 Edition
Microsoft Windows Server 2003 和 Windows XP 64-Bit Edition 版本 2003 更新的安装和部署指南
http://technet.microsoft.com/zh-cn/library/cc700814.aspx
Windows Server 2003 Service Pack 1
Microsoft Windows Server 2003 Service Pack 1 安装和部署更新
http://technet.microsoft.com/zh-cn/library/cc706993(WS.10).aspx

更多信息

Windows 产品更新(例如,关键更新、安全修补程序或修补程序)是一个可执行 (.exe) 文件,该文件包含一个或多个可应用到 Windows 以纠正特定问题的系统文件。“Microsoft 产品支持服务”会将修补程序分发到受到某个特定问题的严重影响的客户。关键更新和安全修补程序是 Microsoft 建议所有客户使用的更新。您可以从 Windows Update 网站、Microsoft Update 网站、Microsoft 下载中心、或其他 Microsoft 网站获取关键更新和安全补丁。

在 2002 年 12 月之后创建的 Windows XP x64 Edition 更新和 Windows Server 2003 更新或 Windows XP 和 Windows 2000 更新

注意 若要确定更新的创建时间,请查看更新程序包中 Update.exe 或 Hotfix.exe 安装程序上的“修改日期”。

要在一台计算机上安装 Windows 产品更新,请在要更新的计算机上运行产品更新程序。若要安装多个产品更新,而且在每次安装后不重新启动计算机,请使用 /z 开关。

Update.exe 程序的命令行选项

下表列出了 Update.exe 程序支持的命令行选项(或开关):
开关说明 ------ ----------- /f 强制其他程序在关机时关闭。/n 在删除修补程序之前不备份文件。/z 安装完成后不重新启动计算机。/q 使用“安静”模式,无需用户交互。/m 使用“无人参与”安装模式 (Windows 2000)。/u 使用“无人参与”安装模式 (Windows XP)。/l 列出已安装的修补程序。
以下代码示例是一个批处理文件,它可以安装多个产品更新并确保在重新启动计算机后替换为正确的文件。
@echo off
setlocal
set PATHTOFIXES=E:\hotfix

%PATHTOFIXES%\Q123456_w2k_sp4_x86.exe /Z /M
%PATHTOFIXES%\Q123321_w2k_sp4_x86.exe /Z /M
%PATHTOFIXES%\Q123789_w2k_sp4_x86.exe /Z /M
注意:所有使用 Update.exe 并且在 2001 年 5 月 18 日以后发布的 Windows XP x64 Editions、Windows Server 2003、Windows XP 和 Windows 2000 产品更新都包含 QChain.exe 功能。但是,2002 年 12 月以前发布的产品更新中存在一个问题,在某些情况下,该问题可能会在计算机上应用错误的二进制文件。2003 年 3 月,Microsoft 发布了 QChain.exe 的更新版本来解决此问题。 有关此问题或如何获得更新的 Qchain.exe 工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
815062 串联多个修补程序时正确的文件未安装

在 2002 年 12 月之前创建的所有 Windows NT 4.0 更新或 Windows XP 和 Windows 2000 更新

注意 若要确定产品更新的创建日期,请查看更新程序包中 Update.exe 或 Hotfix.exe 安装程序上的“修改日期”。

Microsoft 已经发布了一个名为 QChain.exe 的命令行工具。使用 QChain.exe,系统管理员可以将更新串联在一起。如果您将更新串联在一起,则在安装多个更新时,在各次安装之间不必重新启动计算机。如果没有此工具,则唯一支持的方法是在安装完每个更新后都重新启动计算机。QChain.exe 工具具有以下好处:
  • 因为在安装完各个更新之间不重新启动计算机,所以它可以增加服务器的运行时间。
  • 使用它可以在一台计算机上更加快速地安装多个更新。
  • 它在 Windows 2000 和 Windows NT 4.0 上都可以运行。
注意:自 2001 年 5 月 18 日以后发布的所有 Windows XP 和 Windows 2000 更新中均包含 QChain.exe 功能,但是 2002 年 12 月之前发布的更新中存在一个问题,在某些情况下,该问题可能会导致在计算机中放置错误的二进制文件。2003 年 3 月,Microsoft 发布了 QChain.exe 的更新版本来解决此问题。 有关此问题或如何获得最新的 Qchain.exe 工具的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
815062 串联多个修补程序时正确的文件未安装

在不使用 QChain.exe 的情况下串联更新安装是不安全的

安装更新时,如果某个文件被锁定或正在使用,则无法将其替换。因此,该文件被放在 Pending File Rename 队列中,在计算机重新启动后进行替换。在下面的情况下,会发生此问题:
  • 安装了更新 A 和 B,但在两次安装之间没有重新启动计算机。
  • 这两个程序包都包含文件 X。程序包 A 的文件 X 为版本 3;程序包 B 的文件 X 为版本 2。计算机中文件 X 为版本 1。
  • 当安装程序包 A 时,它会将它的文件 X 版本放置在 Pending File Rename 队列中。
  • 当安装程序包 B 时,它会将它的文件 X 版本放置在 Pending File Rename 队列中。
  • 重新启动计算机时,因为程序包 B 是最后安装的,所以会安装它的文件 X 的版本(在 Pending File Rename 队列中,最后一个文件是所使用的文件)。因此,会安装版本 2,而不是按照您预期的那样安装版本 3。

如果在不重新启动的情况下安装之前串联的更新

虽然这种情况很少见,但最好还是验证一下计算机是否具有您认为已安装的所有修复程序。要验证这一点,请使用 Qfecheck.exe 工具。 有关 Qfecheck.exe 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
282784 Qfecheck.exe 验证 Windows 2000 和 Windows XP 修补程序的安装
QChain.exe 会清理注册表中的 Pending File Rename Operations 项以确保在计算机重新启动后只安装文件的最新版本。

在只重新启动一次的情况下安装多个更新

  1. 使用 -z 开关运行更新安装程序,以指示安装程序在安装后不要重新启动。如果您不希望在安装期间显示提示或消息,请添加 -m 开关(表示“安静”模式)。

    更新安装程序是下列程序之一:
    • 自解压缩包程序文件(例如,Qnnnnnn_w2k_spx_x86_en.exe)。
    • Hotfix.exe(如果您已经解压缩了包中的所有文件)。
  2. 安装了所有修补程序后,请运行 QChain.exe。
  3. 重新启动计算机。
您还可以创建一个批处理文件来完成这一任务。下面的示例批处理文件演示了这种方法:
@echo off
setlocal
set PATHTOFIXES=some path
%PATHTOFIXES%\Q123456_w2k_sp2_x86.exe -z -m
%PATHTOFIXES%\Q123321_w2k_sp2_x86.exe -z -m
%PATHTOFIXES%\Q123789_w2k_sp2_x86.exe -z -m
%PATHTOFIXES%\qchain.exe

如何获取 QChain.exe

2001 年 5 月 18 日以后发布的所有 Windows XP 和 Windows 2000 更新都包括 QChain.exe 功能,但是 2002 年 12 月之前发布的更新中存在一个问题,该问题在某些情况下可能会导致您的计算机中出现错误的二进制文件。2003 年 3 月,Microsoft 发布了 QChain.exe 的更新版本来解决此问题。 有关此问题或如何获取最新的 Qchain.exe 工具的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
815062 串联多个修补程序时正确的文件未安装

QChain.exe 命令语法

qchain [logfilename]
可选的 [logfilename] 参数使用 Pending File Rename Operations 项的前后快照来创建文件。

QChain.exe 输出示例

---- Old Information In The Registry ------
Source:C:\WINNT\inf\acpi.inf
Version: 5.0.2183.1
Destination:d:\ntsust\testregchech\1394.inf
Version: 5.0.2183.1

Source:C:\WINNT\inf\adm_mult.inf
Version: 5.0.2184.1
Destination:d:\ntsust\testregchech\1394.inf
Version: 5.0.2183.1

Source:C:\WINNT\inf\banshee.inf
Version: 5.0.2080.1
Destination:d:\ntsust\testregchech\1394.inf
Version: 5.0.2183.1

---- New Information In The Registry ------
Source:C:\WINNT\inf\adm_mult.inf
Version: 5.0.2184.1
Destination:d:\ntsust\testregchech\1394.inf
Version:5.0.2183.1

QChain.exe 的局限性

虽然 QChain 适用于大多数 Windows NT 4.0 和 Windows 2000 更新,但 QChain.exe 可能不适用于包含下列注册表项中列出的二进制文件的更新:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\KnownDLLs
启动时,会将此注册表项中列出的二进制文件加载到内存中。当更新安装程序针对此列表中的二进制文件调用 GetFileVersionInfo 函数时,更新安装程序会引用已经加载的二进制文件,而不是实际出现在目标位置中的二进制文件。

因为启动时会将
KnownDLLs
注册表项中列出的二进制文件加载到内存中,所以在计算机重新启动前,更新安装程序必须用修复的二进制文件替换目标二进制文件。因此,在重新启动时,更新安装程序不会创建 Pending File Rename Operation 来替换该二进制文件。相反,更新会将当前的二进制文件移动到一个临时位置,将修复的二进制文件放置在当前的二进制文件曾经所处的位置,然后创建 Pending File Rename Operation 以便在计算机重新启动时删除当前的二进制文件。

QChain 只影响执行二进制文件替换操作的 Pending File Rename Operations。它对执行删除操作的 Pending File Rename Operation 没有任何影响。

所有 Windows NT 4.0 更新和所有早于 SP2 的 Windows 2000 更新都使用 GetFileVersionInfo 来识别文件的版本。如果您安装两个或更多个 Windows NT 4.0 更新或早于 SP2 的 Windows 2000 更新,并且这些更新程序包包含重叠的 KnownDLLs,则使用 QChain 将这些更新的安装串联起来不能确保安装最新版本的修补程序。

以下情况说明了 QChain 可能未在系统上放置正确的二进制文件的原因:
  • 安装了更新程序包 A 和 B,并且在两次安装之间没有重新启动。
  • 这两个程序包都包含 Kernel32.dll,它是 KnownDLL 列表中的一个文件。程序包 A 包含 Kernel32.dll 版本 3,程序包 B 包含 Kernel32.dll 版本 2,并且计算机中已安装了 Kernel32.dll 版本 1。
  • 在安装程序包 A 时,GetFileVersionInfo 报告计算机中具有 Kernel32.dll 版本 1。因为程序包 A 包含版本 3,因此更新安装程序确定需要替换文件。
    • 更新安装程序将计算机上的 Kernel32.dll 版本 1 移动到一个临时位置,并创建 Pending File Rename Operation 以在计算机下次重新启动时从该临时位置中删除 Kernel32.dll 文件。
    • 程序包 A 的 Kernel32.dll 版本 3 被复制到计算机中。
  • 安装程序包 B 时,GetFileVersionInfo 仍然会报告计算机中安装了 Kernel32.dll 版本 1,因为 GetFileVersionInfo 从加载到内存中的 Kernel32.dll 中读取版本信息。程序包 B 具有版本 2,因此修补程序确定需要替换文件。
    • 更新安装程序将现存于计算机中的 Kernel32.dll(程序包 A 的 Kernel32.dll 版本 3)移动到一个临时位置,并创建 Pending File Rename Operation 以便在计算机下次重新启动时从该临时位置删除(版本 3)Kernel32.dll。
    • 程序包 B 的 Kernel32.dll 版本 2 被复制到计算机中。
  • QChain 在运行,但是不存在用于替换文件的 Pending File Rename Operations,因此 QChain 不执行任何操作。
  • 因为程序包 B 是最近安装的,所以程序包 B Kernel32.dll 版本 2 位于计算机上的正确位置。因此,在计算机重新启动时,会将它加载到内存中。Pending File Rename Operations 将同时删除原来的 Kernel32.dll 版本 1 和程序包 A 的 Kernel32.dll 版本 3。因此,计算机现在具有 Kernel32.dll 版本 2 而不是版本 3。
在 Windows 2000 SP2 以后的修补程序中,不再对加载到内存中的 KnownDLL 使用 GetFileVersionInfo。相反,更新安装程序会映射实际出现在目标位置的文件,然后对所映射的文件调用 GetFileVersionInfo。因此,您可以使用 QChain.exe 将 Windows 2000 SP2 以后的更新串联在一起。执行此操作时,会安装最新版本的文件,而无需考虑所有更新的安装顺序。

如果您重新演示前面的情况,并使用 Windows 2000 SP2 以后的更新,则程序包 B 中的修补程序会映射程序包 A 的 Kernel32.dll 并识别版本 3(该版本高于程序包 B 自己的 Kernel32.dll 版本 2)。因此,程序包 B 不会替换系统中的 Kernel32.dll,并且程序包 A 的 Kernel32.dll 版本 3 是计算机在重新启动后正确使用的版本。

属性

文章编号: 296861 - 最后修改: 2013年9月26日 - 修订: 17.0
这篇文章中的信息适用于:
  • Microsoft Windows Update
  • Microsoft Update
关键字:?
kbproductlink kbhotfixserver kbqfe kbwindowsupdatev6 kbwindowsupdatev3 kbfile kbgraphxlinkcritical kbinfo KB296861
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com