現在地 HOME > 掲示板 > IT6 > 362.html ★阿修羅♪ |
|
Tweet |
(回答先: 念のため書いておきますが、KはWindowsのUPデートもしてあります。 投稿者 考察者K 日時 2004 年 9 月 26 日 23:24:35)
マイクロソフト サポート技術情報 - 296861
http://support.microsoft.com/default.aspx?kbid=296861
複数の Windows Update または修正プログラムを同時にインストールし、再起動を 1 回で済ませる方法
対象製品
概要
この資料では、Hotfix.exe (Microsoft Windows NT 4.0)、または Update.exe (Microsoft Windows 2000、Microsoft Windows XP、Microsoft Windows Server 2003) を使用する Windows 製品の複数の更新プログラム (重要な更新プログラム、セキュリティ更新プログラム、修正プログラムなど) を、1 回の再起動のみでインストールする方法について説明します。この資料は、管理者および IT 担当者を対象としています。Hotfix.exe または Update.exe を使用する Windows 製品の更新プログラムは、単独でも、複数を組み合わせても (Service Pack が適用されているかどうかにかかわらず) Windows にインストールすることができます。
注 : この資料に記載されている手順は、インストール プログラムとして Hotfix.exe や Update.exe を使用していない製品の更新プログラムに対しては使用できません。たとえば、Windows NT 4.0、Windows 2000、および Windows XP 用の Internet Explorer の更新プログラムでは Update.exe ではなく、INF ベースのインストールが使用されています。したがって、Windows NT 4.0、Windows 2000、Windows XP のいずれかで Microsoft Internet Explorer の更新プログラムをインストールする場合、この資料に記載されている手順を使用して複数の更新プログラムを 1 回の再起動のみでインストールすることはできません。Windows Server 2003 用の Internet Explorer の更新プログラムでは、インストール プログラムとして Update.exe が使用されているため、この資料の手順を使用してインストールすることができます。
上記のトピックの関連情報については、以下のマイクロソフト Web サイトを参照してください。
Windows 2000
Microsoft Windows 2000 Service Pack 4 修正プログラム インストールと導入ガイド (HFDeploy.htm)
http://www.microsoft.com/japan/windows2000/downloads/servicepacks/SP4/HFDeploy.htm
Windows XP
Microsoft Windows XP 修正プログラム インストールと導入ガイド
http://www.microsoft.com/japan/WindowsXP/pro/downloads/servicepacks/sp1/hfdeploy.asp
Microsoft Windows XP Service Pack 2 用更新プログラムのインストールと展開ガイド
http://www.microsoft.com/technet/prodtechnol/winxppro/ja/deploy/hfdeploy.mspx
Windows Server 2003 と Windows XP 64-Bit Edition Version 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/security/topics/patch/HFDeploy.mspx
詳細
Windows 製品の更新プログラム (重要な更新プログラム、セキュリティ更新プログラム、修正プログラムなど) は、システム ファイルを 1 つ以上含んだ実行可能ファイル (.exe) です。このシステム ファイルを Windows に適用することで特定の問題を修正できます。Microsoft Product Support Services では、特定の問題により深刻な影響を受けるユーザーに対して、修正プログラムを配布しています。重要な更新プログラムとセキュリティ更新プログラムは、マイクロソフトがすべてのユーザーに推奨する更新プログラムです。重要な更新プログラムとセキュリティ更新プログラムは、Windows Update Web サイト、「Microsoft ダウンロード センター」、またはその他のマイクロソフト Web サイトから入手できます。
Windows Server 2003 の更新プログラムまたは 2002 年 12 月以降に作成された Windows XP および Windows 2000 の更新プログラム
注 : 更新プログラムの作成日を確認するには、更新プログラム パッケージ内のインストール プログラム Update.exe または Hotfix.exe の更新日時を参照してください。
1 台のコンピュータに Windows 製品の更新プログラムをインストールするには、更新するコンピュータで製品の更新プログラムを実行します。製品の更新プログラムをインストールするごとにコンピュータを再起動することなく、複数の更新プログラムをインストールするには、/z スイッチを使用します。
Update.exe プログラムのコマンド ライン オプション
次の表は、Update.exe プログラムでサポートされているコマンド ライン オプション (スイッチ) の一覧です。
スイッチ 説明
------ ------------------------------------------------------
/f : シャットダウン時に他のプログラムを終了します。/n : 修正プログラムの削除に使用するバックアップ ファイルを作成しません。/z : インストールの完了後にコンピュータを再起動しません。/q : Quiet モードを使用します (ユーザー入力を必要としません)。/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
注 : QChain.exe は、2001 年 5 月 18 日以降にリリースされた、Update.exe を使用する Windows Server 2003、Windows XP、および Windows 2000 の製品の更新プログラムすべてに組み込まれています。ただし、2002 年 12 月より前にリリースされた製品の更新プログラムには問題があり、特定の状況ではコンピュータに適切なバイナリがインストールされないことがあります。 2003 年 3 月、マイクロソフトはこの問題を解決するために、更新版の QChain.exe をリリースしました。この問題および更新された QChain.exe ツールの入手方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
815062 複数の修正プログラムを同時にインストールすると、正しいファイルがインストールされないことがある
Windows NT 4.0 のすべての更新プログラムまたは 2002 年 12 月より前に作成された Windows XP および Windows 2000 の更新プログラム
注 : 製品の更新プログラムの作成日を判断するには、更新プログラム パッケージのインストール プログラム Update.exe または Hotfix.exe の更新日時を確認してください。
マイクロソフトでは、QChain.exe というコマンド ライン ツールを提供しています。システム管理者は QChain.exe を使用して、更新プログラムをまとめて適用できます。更新プログラムをまとめて適用すると、複数の更新プログラムを 1 回の再起動のみでインストールすることができます。このツールを使用しない場合、それぞれの更新プログラムをインストールするたびにコンピュータを再起動する必要があります。QChain.exe ツールには次のような長所があります。
* 更新プログラムをインストールするたびにコンピュータを再起動する必要がないため、サーバーの稼働時間が増加します。
* 1 台のコンピュータに複数の更新プログラムをインストールするのにかかる時間を短縮できます。
* Windows 2000 および Windows NT 4.0 の両方で機能します。
注 : QChain.exe は、2001 年 5 月 18 日以降にリリースされた Windows XP および Windows 2000 のすべての更新プログラムに組み込まれています。ただし、2002 年 12 月より前にリリースされた更新プログラムには問題があり、特定の状況ではコンピュータに適切なバイナリがインストールされないことがあります。2003 年 3 月、マイクロソフトはこの問題を解決するために、更新版の QChain.exe をリリースしました。この問題および更新された QChain.exe ツールの入手方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
815062 複数の修正プログラムを同時にインストールすると、正しいファイルがインストールされないことがある
QChain.exe を使用せずに複数の更新プログラムをまとめてインストールする場合の問題点
更新プログラムをインストールするときにロックされているファイルや使用中のファイルがあると、そのファイルは置き換えることができません。その結果、置き換えられなかったファイルは Pending File Rename キューに挿入され、コンピュータの再起動後に置き換えられます。以下のような場合には問題が発生します。
* 更新プログラム A のインストール後に再起動を行わず、更新プログラム B を続けてインストールします。
* 両方のパッケージに、バージョンが異なるファイル X が含まれています。パッケージ A のファイル X は Version 3、パッケージ B のファイル X は Version 2 で、コンピュータ上のファイル X は Version 1 です。
* パッケージ A のインストール時に、パッケージ A のファイル X が Pending File Rename キューに挿入されます。
* パッケージ B のインストール時に、パッケージ B のファイル X が Pending File Rename キューに挿入されます。
* コンピュータの再起動時に、最後にインストールされたパッケージ B のファイル X がインストールされます (最後に Pending File Rename キューに挿入されたファイルが使用されるため)。この場合、本来インストールされる必要のある Version 3 ではなく、Version 2 がインストールされます。
あらかじめまとめた更新プログラムを再起動せずにインストールした場合
このような状況が発生することはほとんどありませんが、これまでにインストールしたすべての修正プログラムについて、正しくインストールされていることを確認することをお勧めします。この確認を行うには Qfecheck.exe ツールを使用します。 Qfecheck.exe の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
282784 Qfecheck.exe で Windows 2000 および Windows XP にインストールされた修正プログラムを検証する
QChain.exe を実行するとレジストリ内の Pending File Rename Operations キーが削除され、コンピュータの再起動後、最新版のファイルのみが確実にインストールされます。
複数の更新プログラムを 1 回の再起動のみでインストールする方法
1. 更新プログラムのインストーラによってインストール後に再起動が行われないように、-z スイッチを指定してインストーラを実行します。インストール中にプロンプトやメッセージが表示されないようにするには、QUIET モードを指定するための -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 の入手方法
QChain.exe は、2001 年 5 月 18 日以降にリリースされたすべての Windows XP および Windows 2000 の更新プログラムに組み込まれています。ただし、2002 年 12 月より前にリリースされた更新プログラムには問題があり、特定の状況ではコンピュータに適切なバイナリがインストールされないことがあります。2003 年 3 月、マイクロソフトはこの問題を解決するために、更新版の QChain.exe をリリースしました。この問題および更新された QChain.exe ツールの入手方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
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 Operation に対してのみ有効です。QChain では、バイナリの削除処理を実行する Pending File Rename Operation については何も実行されません。
すべての Windows NT 4.0 の更新プログラムと Windows 2000 SP2 より前のすべての更新プログラムでは、GetFileVersionInfo を使用してファイルのバージョンが識別されます。Windows NT 4.0 の更新プログラムまたは SP2 以前の Windows 2000 の更新プログラムを複数インストールし、これらの更新プログラムに重複する KnownDLLs が含まれている場合、QChain を使用してこれらの更新プログラムをまとめてインストールしても、確実に最新版の更新プログラムがインストールされるとは限りません。
GetFileVersionInfo が使用される場合に QChain でシステムに正しいバイナリがインストールされない理由を、次のシナリオで示します。
* 更新プログラム パッケージ A をインストールしてから、コンピュータを再起動せずに続けて更新プログラム パッケージ B をインストールします。
* KnownDLLs の一覧に含まれる Kernel32.dll ファイルが両方のパッケージに存在し、パッケージ A には Kernel32.dll の Version 3、パッケージ B には Version 2 が含まれ、コンピュータにはこのファイルの Version 1 がインストールされているとします。
* パッケージ A のインストール時には、コンピュータに Kernel32.dll の Version 1 がインストールされていることが GetFileVersionInfo により報告されます。パッケージ A には Version 3 が含まれているため、ファイルの置き換えが必要であることが更新プログラムのインストーラによって認識されます。
o コンピュータ上にある Kernel32.dll Version 1 は、更新プログラムのインストーラにより一時的な場所に移動されます。また、コンピュータを次に再起動したときに Kernel32.dll ファイルを一時的な場所から削除するための Pending File Rename Operation が作成されます。
o パッケージ A の Kernel32.dll Version 3 がコンピュータにコピーされます。
* パッケージ B をインストールするときにも、GetFileVersionInfo によってコンピュータにインストールされているのが Kernel32.dll Version 1 であると報告されます。これは、GetFileVersionInfo では、メモリに読み込まれている Kernel32.dll からバージョン情報が読み取られるためです。パッケージ B のファイルは Version 2 であるため、修正プログラムでファイルを置き換える必要があると認識されます。
o 更新プログラムのインストーラは、この時点でコンピュータに存在している Kernel32.dll (パッケージ A の Kernel32.dll Version 3) を一時的な場所に移動します。また、次にコンピュータを再起動したときに一時的な場所の Kernel32.dll (Version 3) を削除するための Pending File Rename Operation が作成されます。
o パッケージ B の Kernel32.dll Version 2 がコンピュータにコピーされます。
* QChain を実行しても、ファイル置き換えのための Pending File Rename Operations は存在しないため、QChain では何も実行されません。
* パッケージ B が最後にインストールされているため、コンピュータの適切な場所にはパッケージ B の Kernel32.dll Version 2 が格納されています。そのため、コンピュータを再起動すると、メモリには Version 2 が読み込まれます。Pending File Rename Operations によって、元の Kernel32.dll Version 1 とパッケージ A の Kernel32.dll Version 3 の両方が削除されます。その結果、この時点でコンピュータ上にある Kernel32.dll は Version 3 ではなく、Version 2 です。
Windows 2000 SP2 以降の修正プログラムでは、GetFileVersionInfo はメモリに読み込まれた KnownDLLs に対して使用されません。その代わり、対象となる場所に実際に存在するファイルが更新プログラムのインストーラによりマップされ、そのマップされたファイルに対して GetFileVersionInfo が呼び出されます。したがって、Windows 2000 SP2 以降の更新プログラムでは QChain.exe を使用して更新プログラムをまとめて適用でき、更新プログラムのインストール順序に関係なく、確実に最新版のファイルをインストールすることができます。
Windows 2000 SP2 以降の更新プログラムを使用して上記の状況を再現した場合、パッケージ B の修正プログラムはパッケージ A の Kernel32.dll をマップし、パッケージ B 自体に含まれている Kernel32.dll Version 2 より後のバージョンである Version 3 がインストールされていることが認識されます。このため、システムにインストールされている Kernel32.dll が置き換えられることはありません。この結果、コンピュータの再起動後には、パッケージ A の Kernel32.dll Version 3 が使用されます。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 296861 (最終更新日 2004-08-09) を基に作成したものです。
この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
この資料は以下の製品について記述したものです。
* 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
* Microsoft Windows Update