查看單個文章
舊 2004-03-04, 07:55 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 如何只重新開機一次就能安裝多個 Windows 更新程式或 Hotfix

如何只重新開機一次就能安裝多個 Windows 更新程式或 Hotfix

本文將告訴您,如何只重新開機一次,就能安裝多個使用 Hotfix.exe (Microsoft Windows NT 4.0) 或 Update.exe (Microsoft Windows 2000、Microsoft Windows XP 或 Microsoft Windows Server 2003) 的 Windows 產品更新程式 (例如,重大更新、安全性補充程式或 Hotfix)。本文主要提供給系統管理員與 IT 專業人員使用。





對於使用 Hotfix.exe 或 Update.exe 的 Windows 產品更新程式,您可以單獨安裝,或是與 Windows (包含或不包含 Service Pack) 一同安裝。

注意 本文所說明的程序僅適用於以 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 Hotfix Installation and Deployment Guide (HFDeploy.htm)
http://www.microsoft.com/windows2000...4/HFDeploy.htm

Windows XP
Microsoft Windows XP Hotfix Installation and Deployment Guide
http://www.microsoft.com/WindowsXP/p...1/hfdeploy.asp

Windows Server 2003 與 Windows XP 64 位元版本 2003
Guide for Installing and Deploying Updates for Microsoft Windows Server 2003 and Windows XP 64-Bit Edition Version 2003 (HFDeploy.htm)
http://www.microsoft.com/technet/sec...h/HFDeploy.asp

其他相關資訊
Windows 產品更新 (例如,重大更新、安全性補充程式或 Hotfix) 是包含一個以上系統檔案的可執行檔 (.exe) 可以讓您套用至 Windows 以修正特定問題。


「Microsoft 技術支援處」會將 Hotfix 散發給嚴重受到特定問題影響的客戶。


重大更新與安全性補充程式為 Microsoft 建議所有客戶使用的更新程式。您可以從 Windows Update 網站、「Microsoft 下載中心」或其他 Microsoft 網站取得重大更新與安全性補充程式。


2002 年 12 月以後建立的 Windows Server 2003 更新程式或 Windows XP 與 Windows 2000 更新程式
注意 如果要判斷更新程式何時建立,請檢視更新程式套件中,Update.exe 或 Hotfix.exe 安裝程式上的修改日期。

如果要在單一電腦上安裝 Windows 產品更新,請在想要進行更新的電腦上執行產品更新程式。 如果要安裝多個產品更新,但不想在每次安裝後重新啟動電腦,請使用 /z 參數。


Update.exe 程式的命令列選項


下列表格列出 Update.exe 程式所支援的命令列選項 (或參數):

參數說明 ------ ----------- /f 關機時強制其他程式關閉。/n 移除 Hotfix 時不要備份檔案。/z 安裝完成後,不要重新開機。/q 使用無訊息模式 (沒有使用者互動)。/m 使用自動安裝模式 (Windows 2000)。/u 使用自動安裝模式 (Windows XP)。/l 列出安裝的 Hotfix。

下列程式碼範本為安裝多個產品更新的批次檔,會在電腦重新啟動後確認取代為正確的檔案。



@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


注意 所有於 2001 年 5 月 18 日以後發行,且使用 Update.exe 的 Windows Server 2003、Windows XP 與 Windows 2000 產品更新程式,均包含 QChain.exe 功能,然而,2002 年 12 月之前發行的產品更新中所存有的問題,在某些情況下可能會將錯誤的二進位編碼套用到您的電腦上。


2003 年 3 月 Microsoft 已發行 QChain.exe 的更新版本,以解決此問題。


如需有關此問題或如何取得更新版 Qchain.exe 工具的詳細資訊,請按一下下列文件編號,檢視 Microsoft Knowledge Base 中的文件:
815062 The Correct File Is Not Installed When You Chain Multiple Hotfixes

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。


注意 QChain.exe 功能隨附於 2001 年 5 月 18 日以後發行的所有 Windows XP 與 Windows 2000 產品更新中。然而,2002 年 12 月之前發行的產品更新中所存有的問題,在某些情況下可能會將錯誤的二進位編碼套用到您的電腦上。


2003 年 3 月 Microsoft 已發行 QChain.exe 的更新版本,以解決此問題。


如需有關此問題或如何取得更新版 Qchain.exe 工具的詳細資訊,請按一下下列文件編號,檢視 Microsoft Knowledge Base 中的文件:
815062 The Correct File Is Not Installed When You Chain Multiple Hotfixes

在不使用 QChain.exe 的情況下鏈結更新的安裝程式,是很不安全的做法
安裝更新程式時,如果檔案被鎖定或正在使用,就會無法取代。


系統會將檔案放在「擱置檔案重新命名」(Pending File Rename) 佇列中,並在電腦重新啟動後加以取代。在下列情況中就會發生此問題:

安裝了更新程式 A 與更新程式 B,卻未在兩次安裝之間重新啟動電腦。
兩個套件都含有檔案 X。套件 A 的檔案 X 是第 3 版;套件 B 的檔案 X 為第 2 版;電腦上檔案 X 的版本是第 1 版。

當套件 A 安裝完畢後,會將它包含的檔案 X 放在「擱置檔案重新命名」佇列中。


當套件 B 安裝完畢後,也會將它包含的檔案 X 放在「擱置檔案重新命名」佇列中。


當電腦重新啟動時,由於套件 B 是最後安裝的,所以電腦會安裝套件 B 中檔案 X 的版本 (在「擱置檔案重新命名」佇列中,最後一個檔案即為所使用的檔案)。因此,便會安裝第 2 版,而不是您想要的第 3 版。


如果安裝了先前所鏈結的更新程式,卻沒有重新啟動電腦
這種情形十分少見,不過最好還是檢查一下,確認電腦是否已具備您認為已經安裝的所有修正程式。



如果要檢查電腦,請使用 Qfecheck.exe 工具。 如需有關 Qfecheck.exe 的詳細資訊,請按一下下列文件編號,檢視「Microsoft 知識庫」中的文件:
282784 Qfecheck.exe 驗證 Windows 2000 和 Windows XP Hotfix 的安裝

QChain.exe 會清除登錄中的 Pending File Rename Operations 機碼,以確認電腦重新啟動之後,只安裝了檔案的最新版本。



如果要只重新啟動一次,就安裝多個更新程式
執行更新安裝程式時請搭配使用 -z 參數,以指示安裝程式不要在安裝完成之後重新啟動電腦。如果不想在安裝時看見提示或訊息,請加入 -m 參數 (無訊息模式)。



更新安裝程式為以下程式之一:
自動解壓縮的套件程式檔案 (例如,Qnnnnnn_w2k_spx_x86_en.exe)。




- 或者 -
Hotfix.exe (如果您已經從套件解壓縮所有檔案)。
在您安裝所有 Hotfix 之後,請執行 QChain.exe。
重新啟動電腦。


您還可以建立批次檔以進行這項作業。以下的範例批次檔會示範這個方法:


@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 Knowledge Base 中的文件:


815062 The Correct File Is Not Installed When You Chain Multiple Hotfixes

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 更新程式上執行,但是無法與包含二進位檔案 (如下列登錄機碼所列) 的更新程式搭配使用:
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 Operations。

SP2 以前的所有 Windows NT 4.0 更新程式與 Windows 2000 更新程式都使用 GetFileVersionInfo 來辨識檔案版本。



如果您安裝兩個以上的 Windows NT 4.0 更新程式或 SP2 之前的 Windows 2000 更新程式,以及包含重疊 KnownDLLs 的更新程式,則當您使用 QChain 鏈結這些更新程式的安裝時,將無法確保是否已安裝最新版本的修正程式。

下列情況將說明為何 QChain 無法將正確的二進位碼檔案放到系統上:
您安裝了更新套件 A 與更新套件 B,但未在兩次安裝之間重新啟動電腦。
兩個套件均包含 Kernel32.dll,此檔案位於 KnownDLLs 清單中。




套件 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 讀取版本資訊,所以 GetFileVersionInfo 仍會回報電腦上安裝了 Kernel32.dll 第 1 版, 而套件 B 具有第 2 版,因此 Hotfix 會要求取代檔案。


更新的安裝程式會將目前電腦上的 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 第 2 版與套件 A 的 Kernel32.dll 第 3 版。因此,電腦上的 Kernel32.dll 是第 2 版,而非第 3 版。


SP2 之後的 Windows 2000 修正程式中,載入記憶體的 KnownDLLs 已不再使用 GetFileVersionInfo。



相反地,更新安裝程式會對應實際存在於目標位置的檔案,然後呼叫所對應檔案上的 GetFileVersionInfo。因此,您可以使用 QChain.exe 將 SP2 之後的 Windows 2000 更新程式鏈結在一起。 當您執行這項操作時,就會安裝檔案的最新版本,而不論所安裝的更新程式順序。

如果您再次發生先前的情況,並且使用 SP2 之後的 Windows 2000 更新程式,則套件 B 中的 Hotfix 會對應套件 A 的 Kernel32.dll,並辨識第 3 版。第 3 版是比套件 B 自己的 Kernel32.dll 第 2 版更新的版本。因此,套件 B 不會取代系統上的 Kernel32.dll,而套件 A 的 Kernel32.dll 第 3 版會是電腦重新啟動後能夠正確使用的版本。


這篇文章中的資訊適用於:


Microsoft Windows Server 2003, 64-Bit Datacenter Edition
Microsoft Windows Server 2003, 64-Bit Enterprise Edition
Microsoft Windows Server 2003, Datacenter Edition
Microsoft Windows Server 2003, Enterprise Edition
Microsoft Windows Server 2003, Standard Edition
Microsoft Windows Server 2003, Web Edition
Microsoft Windows XP 64-Bit Edition Version 2002
Microsoft Windows XP 64-Bit Edition Version 2003
Microsoft Windows XP Home Edition
Microsoft Windows XP Professional
Microsoft Windows XP Media Center Edition
Microsoft Windows XP Tablet PC Edition
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Professional
Microsoft Windows 2000 Server
Microsoft Windows NT Server 4.0
Microsoft Windows NT Server, Enterprise Edition 4.0
Microsoft Windows NT Server 4.0 Terminal Server Edition
Microsoft Windows NT Workstation 4.0
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次