Windows と Windows コンポーネント用パッケージ インストーラ Update.exe の内部メカニズム
公開日: 2004年8月9日
Windows と Windows コンポーネント用パッケージインストーラ
トピック
はじめに
このホワイト ペーパーでは、Update.exe として知られる Windows 用パッケージ インストーラについて説明します。Update.exe は、Windows オペレーティング システムやその他の Microsoft 製品のサービス パックおよび更新プログラム (修正プログラム) のインストールに広く使用されています。このパッケージ インストーラは数年にわたり Windows オペレーティング システムのインストーラとして使用されてきましたが、最近は Microsoft の他のチームも製品のインストーラとして採用しています。このホワイト ペーパーでは、パッケージの種類、導入方法、更新パッケージの内部動作について詳しく説明すると共に、インストールの概要にも触れます。このドキュメントの内容は 2003 年 12 月現在のものです。Windows 用パッケージ インストーラの機能が向上するに従い、このドキュメントも更新されます。このドキュメントの更新版については、http://www.microsoft.com/technet/prodtechnol/windowsserver2003/deployment/winupdte.mspx (英語) を参照してください。ドキュメントが更新されていないかどうかを確認するために、定期的にこのページをチェックしてください。
Windows Sustained Engineering (WinSE) チームがリリースする更新プログラムには必ずこの Windows 用パッケージ インストーラが付属しています。ただし、NT4 の更新プログラムには Update.exe の前のインストーラである Hotfix.exe が付属しています。
Microsoft では、インストーラの統一を目的としてインストーラを統合する計画 (英語) を開始しました。この計画は、インストーラにさまざまな機能向上を加えると共に、数あるインストーラを Update.exe と MSI インストーラの 2 種類に統合しようというものです。このドキュメントでは、Update.exe インストーラについて説明します。MSI インストーラの詳細については、「About Windows Installer」(英語) を参照してください。
Update.exe はサービス パックと修正プログラムの両方に使用されるため、どちらの更新プログラムを適用する場合でも競合が発生しないように設計されています。このインストーラは、更新プログラムとサービス パックのいずれについても、ファイルの追加、既存のファイルの削除または置き換え、レジストリ キーの追加、削除、更新、更新するファイルのバックアップを行います。
このインストーラのプロセス フローを概略的に示すと次の図 1 のようになります。

図 1: インストーラの動作概要
このドキュメントの終わりにある「付録 C インストーラのプロセス フロー」には、Update.exe によるサービス パックや修正プログラムのインストール作業の流れを詳細に示すフローチャートがあります。
主な更新パッケージの種類
"更新パッケージ" (単に "パッケージ" ということもあります) とは、インストーラ、関連ファイル、およびペイロード (インストールされる DLL、実行可能ファイル、またはスクリプト) が収められた製品または実行可能ファイルをいいます。これら 3 つのコンポーネントを総称して "パッケージ コンテンツ" といいます (「主な更新パッケージの種類」を参照してください)。ここでは、更新プログラムとサービス パックという 2 つの代表的なパッケージに絞って説明します。
更新プログラム (修正プログラム)
更新プログラム ("修正プログラム" ともいいます) は最も単純な形式の更新パッケージです。インストーラ、インストーラの関連ファイル、およびペイロードが含まれています。
サービス パック
更新パッケージの中で最もサイズの大きなものがサービス パックです。一般に、サービス パックには、製品の前回のサービス パックまたは RTM (Release to Market) バージョンがリリースされた後に発表された更新プログラムがすべて含まれています。サービス パックにも、他の更新パッケージと同じように、インストーラ、インストーラの関連ファイル、およびペイロードが収められています。
インストーラの実行とリターン コード
サービス パックや更新プログラムは 1 つの実行可能ファイルとして出荷されます。このファイルには、インストール ロジックやレジストリの変更を含め、上記のファイルがすべて含まれています。コマンド ラインにスイッチをまったく指定せずにパッケージを実行すると、パッケージの内容が一時フォルダに展開され、インストーラ (Update.exe) が起動し、更新プログラムのインストールが開始されます。インストーラには主として次の 3 つの目的があります。
1. | サービス パックのインストール たとえば、Windows 2000 SP4 をインストールする場合は、W2ksp4.exe を実行します。これによって、サービス パックのインストール ファイルが展開され、Update.exe が自動的に起動して、サービス パックをインストールします。 |
2. | 更新プログラムのインストール たとえば、Microsoft サポート技術情報の Knowledge Base の文書 810556 に関連する更新プログラムをインストールするには、Q810556_WXP_SP1_x86_ENU.exe を実行します。これによって、更新プログラムのインストール ファイルが展開され、Update.exe が自動的に起動して、更新プログラムをインストールします。 |
3. | パッケージ コンテンツの展開 たとえば、展開済みのファイルをインストールするには、それらのファイルがあるフォルダから Update.exe を実行します。 |
このドキュメントでは、これら 3 つのシナリオにおける Update.exe の動作について説明します。わかりやすいように、まずは 3 つ目のシナリオである「更新パッケージ コンテンツの展開」から説明を始めます。更新プログラムおよびサービス パックのインストール オプションについては、「コマンド ライン スイッチ」を参照してください。
メモ Microsoft では、パッケージのインストール方法として、このドキュメントまたは導入ガイドに記載されている Windows パッケージ インストーラのみを推奨およびサポートしています。
更新パッケージ コンテンツの展開
上の 3 つ目のシナリオのように、インストールを実行する前にパッケージ内のファイルを展開した方がよい場合があります。更新プログラムのインストールによって適用される変更の内容をあらかじめ確認するために、このような方法が一般的となっています。パッケージを解凍すると、インストーラの実行可能ファイル、関連ファイル、およびペイロードが展開されます。ここでは、パッケージ コンテンツを展開する方法と、更新プログラムのインストール方法を指定するコマンド ライン スイッチについて説明します。
パッケージ コンテンツの展開方法やファイルの保存場所を指定できるオプションがあります。コマンド ライン スイッチを使用すると、ユーザー プロンプトの表示とファイルの展開先とするフォルダを指定できます。次の表では、展開方法を指定するスイッチを示し、それぞれの働きについて説明します。
表 1: 展開スイッチ
/Q | 展開中に状態ダイアログを表示しません。 |
/U | ファイルを展開するフォルダの指定を求めるダイアログを表示しません。/X または /X:path と共に使用することが必要です。/X スイッチと共に使用した場合、/U は Update.exe ではなく展開機能に対するディレクティブとなります。 |
/X | サービス パックのファイルを展開するだけで、Update.exe を起動しません。ファイルを展開するフォルダのパスの入力を求めるダイアログが表示されます。 |
/X:"foldername" (path_name) | サービス パックのファイルを指定されたフォルダに展開するだけで、Update.exe を起動せず、起動するかどうかを確認するダイアログも表示しません。 |
ディレクトリの指定
ファイルは、展開されると、指定したフォルダに保存されます。フォルダを指定しなかった場合は、ランダムに作成された名前のフォルダに保存されます。たとえば、/X /U と指定し、フォルダの指定を求めるダイアログを表示しなかった場合は、1ed6b742f546f などのフォルダ名が作成されます。表 2 に、パッケージ コンテンツの主な展開方法を示します。
表 2: コマンドラインスイッチの使用例
Update_name.exe /X | フォルダのパスの入力を求めるダイアログを表示し、そのフォルダにパッケージ コンテンツを展開します。 |
Update_name.exe /X:C:\Update | C ドライブに Update というフォルダを作成し、そこにパッケージ コンテンツを展開します。 |
Update_name.exe /X /U | ランダムに作成したフォルダにパッケージ コンテンツを展開します。 このフォルダは現在のドライブの root フォルダに作成され、ランダムなフォルダ名が生成されます。 |
使用するインストーラのバージョンによっては、/U スイッチを使用しなくてもフォルダの指定を求めるダイアログ ボックスを省略できる場合があります。このインストーラの Q2 バージョン以降では、/X スイッチと有効なパス (/X:C:\path_name) を指定すると、ダイアログ ボックスは既定で表示されません。Q2 より前のバージョンの場合、/X スイッチを指定すると、ファイルを展開するフォルダを確認するダイアログ ボックスが表示されます (インストーラの機能およびバージョンによる違いについては、「付録 A インストーラのバージョン管理と機能」を参照してください)。
コマンド ライン スイッチ
ここでは、Update.exe に指定できるコマンド ライン スイッチ オプションについて説明します。これらのスイッチによって、Update.exe による更新プログラムおよびサービス パックの既定のインストール方法を変更することができます。指定したスイッチはパッケージの実行可能ファイルから Update.exe に渡されます。ただし、スイッチ オプションではファイルの展開方法を指定することはできません。次に、各スイッチ オプションの機能について説明します。
コマンドラインスイッチオプション
ここに挙げたスイッチ オプションにはスラッシュ (/) が付いていますが、スラッシュの代わりにハイフン (-) を使用することもできます。どちらを使用してもスイッチの機能は変わりません。
| • | /U 無人モード サービス パックのインストールにおいて既定のスイッチ オプションがすべて適用されます。ユーザーに入力を求めるダイアログ ボックスは表示されず、インストール プロセスの進行状況を示すバーが表示されます。 |
| • | /Q サイレント モード SP4 が無人モードと同じ方法でインストールされます。ただし、進行状況を示すバーは表示されず、インストール中にエラーが発生しても表示されません。 |
| • | /F 強制再起動 このスイッチ オプションを指定した場合には、インストールの完了後、すべてのアプリケーションを閉じ、コンピュータを再起動する必要があります。ファイルを保存せずにアプリケーションを閉じる場合は、/F スイッチ オプションを使用します。このスイッチ オプションは他のコマンド ライン スイッチ オプションと組み合わせて使用します。ただし、このスイッチ オプションと一緒に /S (統合インストール モード)、/L (インストールされた修正プログラムの一覧)、/Z (インストール後にコンピュータを自動的に再起動しない) を指定することはできません。 |
| • | /N バックアップおよびアンインストールなし インストール中にサービス パックの削除に必要なファイルをバックアップしません。このスイッチ オプションを指定するとディスク領域を節約できますが、サービス パックはコマンド ラインでも削除できなくなります。 このスイッチ オプションは他のコマンド ライン スイッチ オプションと組み合わせて使用します。ただし、このスイッチ オプションと一緒に /S (統合インストール モード) および /L (インストールされた修正プログラムの一覧) を指定することはできません。 この機能はインストーラのバージョンによって異なります。Q2 より前のバージョンでは、インストールした更新が [プログラムの追加と削除] の一覧に表示されません。Q2 以降のバージョンでは、インストールした更新は [プログラムの追加と削除] の一覧に表示されますが、その更新を選択して削除することはできません。 |
| • | /O OEM ファイルの上書き 有人モードの標準インストールにおいて、コンピュータの製造元がインストールしたファイルが更新またはサービス パックのインストールによって上書きされる場合は、確認のメッセージが表示されます。このスイッチを指定すると、上書きの確認メッセージが表示されることなくファイルが上書きされます。無人モードでは、/O を指定しない限り、OEM ファイルは上書きされません。 |
| • | /Z 再起動なし このスイッチ オプションを指定して修正プログラムをインストールすると、インストールの完了後にコンピュータが自動的に再起動されません。このスイッチ オプションは他のコマンド ライン スイッチ オプションと組み合わせて使用します。ただし、このスイッチ オプションと一緒に /S (統合インストール モード) および /L (インストールされた修正プログラムの一覧) を指定することはできません。修正プログラムをインストールした後、すぐにコンピュータを再起動して、サービス パックのインストールを完了してください。 |
| • | /L 修正プログラムの一覧 このスイッチ オプションを指定すると、インストールした Windows 修正プログラムの一覧が表示されます。このスイッチ オプションは、他のスイッチと組み合わせて使用することはできません。このスイッチを指定すると、「更新プログラムのレジストリ エントリ」に示したレジストリの修正プログラム セクションから取得されたインストール済みの修正プログラムの一覧が表示されます。インストールされた更新プログラムの表示の詳細については、文書番号 282784「Qfecheck.exe で Windows 2000 および Windows XP にインストールされた修正プログラムを検証する」および文書番号 304864「Qfecheck Hotfix Tool は、インストール直後の Hotfix を再インストールが必要と間違った報告をする場合がある」を参照してください。 |
| • | /S:foldername ファイルを統合インストール用の共有ネットワーク フォルダに展開 Windows 2000 と SP4 を統合インストールとして導入する場合は、このスイッチ オプションを使用して、統合共有ネットワーク フォルダに Windows 2000 および SP4 のファイルを保存します。この共有フォルダを使用すると、Windows 2000 とサービス パックを同時にインストールできるため、時間の節約になります。Windows 2000 SP4 を統合インストール ("スリップストリーム" ともいう) として展開する方法については、「シナリオ 1: Service Pack 適用済み Windows 2000 をインストールする」を参照してください。 |
| • | /D:foldername ファイルを指定したフォルダにバックアップ サービス パックのバックアップ フォルダ ディレクトリを指定します。この機能はサービス パック以外の更新プログラムには使用できません。この機能を使用できるのは、Q1 およびそれ以降のインストーラだけです (「付録 A インストーラのバージョン管理と機能」を参照してください)。 /D を使用し、フォルダを指定しなかった場合は、既定のフォルダ $ntservicepackuninstall$ にファイルがバックアップされます。 |
| • | /ER 拡張リターン コードの有効化 標準のリターン コード (成功、成功 - 再起動が必要、失敗) 以外のコードを呼び出し側のアプリケーションに返すことができます。拡張リターン コードには、標準 Win32 エラーとインストーラ関連のエラーの 2 種類があります (詳細については、「付録 F 拡張リターン コード」を参照してください)。 最近、Microsoft ではインストーラ スイッチの標準を定義し、Q4 インストーラからその標準に移行しました (インストーラのバージョン管理の詳細については、「付録 A インストーラのバージョン管理と機能」を参照してください)。/D および /S については、同じ働きをする新しいスイッチは定義されていませんが、これまでのスイッチをそのまま使用できます。次の表 3 に、新しいスイッチと従来のスイッチの一覧を示します。 表 3: 標準化されたスイッチ なし | /Uninstall | 更新プログラムまたはサービス パックをアンインストールします。 | /? | /Help | ヘルプを表示します。 | /D:foldername | なし | ファイルを指定されたフォルダにバックアップします (サービス パックをインストールする場合のみ)。 | なし | /ER | 拡張リターン コードを有効にします。 (詳細については、「付録 F 拡張リターン コード」を参照してください。) | /F | /F | インストールの完了後、コンピュータを再起動するときに他のアプリケーションを強制的に終了します。 | /F | /Forcerestart | インストールの完了後、コンピュータを再起動します。 | /L | /L | インストールした修正プログラムの一覧を表示します (Windows Updateの場合のみ)。 | /N | /N | サービス パックまたは修正プログラムが削除された場合に復元するファイルをバックアップしません。[プログラムの追加と削除] で修正プログラムを選択しても [削除] は表示されないため、アンインストールすることはできません。Update.exe の Q2 以降のバージョンを使用する必要があります (詳細については、「各インストーラ バージョンの機能」を参照してください)。 | /O | /O | 確認メッセージを表示せずに OEM ファイルを上書きします。 | /Q | /Quiet | サイレント モードでインストールを行います。ユーザー インターフェイスが表示されない点を除き、無人モードと同じです。インストール プロセス中にメッセージはまったく表示されません。 | /S:foldername | なし | オペレーティング システム イメージと SP4 を共有配布フォルダに配置し、統合インストールを可能にします (サービス パックのみ)。 | /U | /Passive | 無人セットアップ モードでインストールを行います。セットアップ中は、重大なエラーと進行状況を示すバーだけが表示されます。 | /Z | /Norestart | インストールの完了後にコンピュータを再起動しません。 |
|
リターン コード
インストーラをバッチ ファイルから呼び出すと、インストールが成功したかどうかを示す情報を取得することができます (バッチ ファイルの詳細については、「インストール バッチ ファイル」を参照してください)。インストールが成功したかどうかを示す値は、リターン コードとして呼び出し側のプロセスに返されます。リターン コードを基に、次にどのような作業を行う必要があるかを検討できます。インストーラが返すリターン コードには、"失敗"、"成功"、"成功 - 再起動が必要" の 3 種類があります。
インストーラは、処理が完了すると、値を呼び出し側のプログラムに返します。次の表 4 は、インストーラが返す値とそれに対応するエラー コードを示したものです。
表 4: リターンコード
1603 | ERROR_INSTALL_FAILURE | 失敗 |
0 | ERROR_SUCCESS_REBOOT_REQUIRED | 成功 |
3010 | ERROR_SUCCESS_REBOOT_REQUIRED | 成功 - 再起動が必要 |
インストーラをバッチ ファイルから実行する方法の詳細については、「インストール バッチ ファイル」の例を参照してください。インストーラが実行する変更の詳細については、「付録 D サンプル インストーラ ログ」を参照してください。
導入
導入とは、サービス パックや更新プログラムを個々のコンピュータにインストールすることをいいます。導入について詳しく説明する前に、このインストーラで使用できる導入の基本的な要素を確認しておきます。最後に、あるサービス パックがリリースされてから次のサービス パックまでの間にリリースされる更新の導入について簡単に説明します。
導入の要素
Pending File Rename
実行中のシステムに更新プログラムをインストールする場合、更新の対象となるファイルが使用中となっていることもあります。そのような場合には、そのファイルの更新版が Pending File Rename (PFR) キューに追加されます。このキューは、システムの再起動時に置き換える必要のあるファイルが記録されるレジストリ キーです。PFR 操作が必要な場合には、システムを再起動して初めて更新プログラムのインストールが完了します。システムの再起動が必要かどうかは、インストーラ ログまたはリターン コードを調べることによって確認できます。
連続したインストール (QChain)
QChain は、複数の修正プログラム パッケージまたは 1 つのサービス パックと修正プログラム パッケージのインストールを効率化するテクノロジです。連続したインストールによって、1 回の再起動で Pending File Rename (PFR) をコミットすることができます。
Window インストーラの以前のバージョンでは、1 回の再起動で複数の更新プログラムをインストールするためには QChain を手動で実行することが必要でした。Update.exe の最近のバージョンには QChain 機能が組み込まれています。QChain の詳細については、「複数の Windows Update または修正プログラムを同時にインストールし、再起動を 1 回で済ませる方法」を参照してください。
2002 年 12 月以前にリリースされた更新プログラムをインストールする場合には、インストールの完了後にシステムを再起動することをお勧めします。インストーラがシステムの状態に加えた変更はインストールが完了しても既定の状態に戻らないからです (再起動が必要なケースの詳細については、Microsoft サポート技術情報の Knowledge Base の文書 815062 を参照してください)。
更新プログラムとオプションのコンポーネント
コンピュータに更新プログラムを適用するときに、更新プログラムの対象となるコンポーネントがインストールされていないこともありえます。このようなことが起きるのは、コンピュータをセットアップするときにオプションのコンポーネントをインストールしなかった場合です。オプションのコンポーネントに更新プログラムを適用するには、"sticky updates" という機能を適用します。sticky updates を完全な状態で適用すると、オプションのコンポーネントをインストール時に更新することができます。
オプションのコンポーネントに影響を与える更新プログラムがインストールされる場合、2 つの状況が考えられます。1 つはコンポーネントがインストールされていて、更新されるケースで、もう 1 つはコンポーネントがインストールされていないケースです。オプションのインストール コンポーネントがインストールされていない場合は、そのコンポーネントの更新に必要なファイルが将来の使用に備えてディスクにキャッシュされます。その時点では sticky updates が完全に適用されていなくても、sticky updates に関連する機能の一部を、更新プログラムのインストール後に確認することができます。キャッシュされたファイルの保存先となるディレクトリはレジストリで確認できます。このディレクトリは、レジストリ キー HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup のレジストリ値 ServicePackCachePath に設定されます。このレジストリ キーにディレクトリが記録されるかどうかは、どのようなオプションのコンポーネントをインストールしたかと、それらのコンポーネントの更新プログラムもインストールしたかどうかによって決まります。
sticky updates が完全に実装された段階で、その機能と動作方法の詳細な説明がこのドキュメントに記載される予定です。
言語に関する考慮事項
システムの言語と一致する言語版の更新プログラムが必要となる場合もあります。また、システムの言語とは関係なく適用できる更新プログラムもあります。Windows Updateが正しく動作するためには、インストールした更新プログラムの言語がコンピュータの既定の言語と一致している必要があります。他の Sustained Engineering チームからリリースされた更新プログラムの場合は、言語の一致が必要ではないこともあります。Microsoft サポート技術情報の Knowledge Base の文書で更新プログラムが言語に一致する必要があるかどうかがわからない場合は、.inf ファイルの LanguageType に設定されている値で確認できます。言語コードが 0x0 であれば、その更新プログラムはシステムがどのようなロケールであっても適用可能です (.inf ファイルの詳細については、「付録 B Update.inf ファイル」を参照してください)。
Multilingual User Interface Pack (MUI) を使用している場合、MUI 固有のインストールはないため、システムを更新プログラムするには、英語版の更新プログラムまたはサービス パックをインストールするだけです。MUI 対応のシステムを更新プログラムする方法の詳細については、「Service Pack Release Notes for Windows Multilingual User Interface (MUI) Version」(英語) を参照してください。
更新パッケージのバージョン管理
更新プログラムに含まれる DLL ファイルだけでなく、更新パッケージそのものもバージョン管理されています。これによって、一度リリースした更新プログラムを再びリリースする場合でも、両者をバージョン番号によって簡単に区別することができます。更新プログラムをインストールすると、そのバージョン番号がレジストリに記録されます (詳細については、「更新プログラムのレジストリ エントリ」を参照してください)。
更新プログラムをインストールする前にバージョンを確認するには、パッケージ内容を展開し、.inf ファイルの内容を表示します。更新のバージョンは .inf ファイルの [Version] セクションではなく BUILDTIMESTAMP キーの [Strings] セクションにあります。パッケージの内容を展開する方法については、「更新パッケージ コンテンツの展開」を参照してください。
更新のバージョン番号は、パッケージが作成された日付と時刻で構成されています。たとえば、バージョン 20030102.120145 の意味は、次の表 5 のようになります。このバージョン管理方法により、どの更新バージョンの方が新しいか (最新のバージョンはどれであるか) を判別することが可能になります (次の表 5 を参照してください)。
表 5: 更新のバージョン管理
1 - 4 | 更新が作成された年 | 2003 |
5, 6 | 更新が作成された月 | 01 |
7, 8 | 更新が作成された日 | 02 |
9, 10 | 更新が作成された時刻の時 | 12 |
11, 12 | 更新が作成された時刻の分 | 01 |
13, 14 | 更新が作成された時刻の秒 | 45 |
更新プログラムのレジストリエントリ
更新プログラムをインストールすると、複数のエントリがレジストリに追加されます。これらのエントリによって、更新プログラムをインストールしたことが記録され、インストールの内容やアンインストールに必要となるファイルの場所などの詳細が明らかになります。これらの情報が設定されるレジストリ キーは、Microsoft Baseline Security Analyzer (MBSA)、QFE Check、[プログラムの追加と削除] (A/RP)、および外部ツールにおいて、現在インストールされている修正コードを特定し、表示する目的で使用されます。
更新プログラムをインストールすると、3 つのレジストリ キーが書き込まれます。それらは通常、修正プログラム レジストリ エントリ、更新レジストリ エントリ、[プログラムの追加と削除] (A/RP) レジストリ エントリと呼ばれます。修正プログラム レジストリ エントリには、インストールされた Windows 修正コードの詳細だけが記録されます。更新エントリには、Windows チームおよびその他のチームからリリースされた修正コードの詳細が記録され、A/RP エントリには、[プログラムの追加と削除] の一覧に表示される修正プログラムの情報が記録されます。
メモ パッケージをインストールするときに /N スイッチを指定すると、A/RP エントリが書き込まれないことがあります。Q2 以前のインストーラ (「付録 A インストーラのバージョン管理と機能」を参照) を使用し、アンインストールなしオプションを選択してインストールした古いパッケージは、[プログラムの追加と削除] の一覧には表示されません。
これらのエントリでは、KB または Q とそれに続く Microsoft サポート技術情報の Knowledge Base の文書番号で更新が表されます。古い更新は Q で始まり、2002 年以降にリリースされた更新は KB で始まります。KB と KB 文書番号で更新を表すことは、現在 Microsoft において標準として規定されています。Q は 2003 年中に使用が中止される予定です。
サービス パックをインストールすると、更新プログラムのインストールによって追加されたレジストリ キーがクリーンアップされます。サービス パックの目的の 1 つは、前回のサービス パックのリリース以後にリリースされた修正プログラムを 1 つにまとめることです。サービス パックをインストールすることによって、それまでにインストールされた更新プログラムのうち新しいサービス パックに含まれている更新プログラムのレジストリ エントリがレジストリから削除されます。代わりにサービス パックのエントリが追加され、[プログラムの追加と削除] の一覧にもサービス パックが表示されます。サービス パックをアンインストールすると、元の修正プログラムとそのレジストリ エントリが復元されます。
更新プログラムのレジストリエントリ
下記の更新レジストリ エントリ キーは WinSE (Windows Sustained Engineering) チームおよび Microsoft の他の Sustained Engineering チームが使用しており、この後に示す修正プログラム キーに代わるものです。このキーの形式はインストールするパッケージの種類 (サービス パックか修正プログラムか) によって異なります。サービス パックの場合は要約情報だけで構成され、更新の場合は以下のように要約情報とファイル一覧のエントリが定義されます。
1. | 要約情報 HKEY_LOCAL_MACHINE \Software\Microsoft\Updates\[Target Product]\[Target SP]\KB###### [Target Product] : Windows、Office などの製品名を表します。 [Target SP] : SP1 や SP2 などのサービス パック名を表します。 例 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP2\KB823980 サブキーの使用方法は各グループのニーズによって異なります。多くのグループは、上の例のようにターゲット サービス パックのリリースを詳細に記録しています。個々の修正を表すキーでは、表 7 に示すサブキーを使用していることがあります。 表 6: 更新プログラムのレジストリキー値 Default | 使用されません。 | Description | 更新の説明 (更新のタイトルなど。例 : "Windows XP Hotfix - KB######")。 | Installed By | 更新プログラムをインストールしたユーザー。 | InstalledDate | 更新プログラムをインストールした日。 | Type | インストールの種類 (現在は、サービス パックと修正プログラムのいずれかのみ)。パッケージの種類の詳細については、http://support.microsoft.com/default.aspx?scid=kb;ja;824684&sd=tech を参照してください。 インストールの種類がサービス パックの場合は、ファイルの一覧は作成されません。サービス パックに含まれるすべてのファイルを一覧することは、レジストリの目的とは合致しません。 | UninstallCommand | 修正プログラムのアンインストール コマンドがある場所。修正コードをインストールするときに /N スイッチを指定した場合、このキーに値は追加されません。復元するファイルが保存されたディレクトリが存在しない場合は、修正プログラムをアンインストールすることはできません。 |
|
2. | ファイル一覧キー ファイル一覧キーには、インストールされたファイル、インストール先のディレクトリ、ファイルのバージョンなどの詳細な一覧が記録されます。 HKEY_LOCAL_MACHINE \Software\Microsoft\Updates\[Target Product]\[Target SP]\KB######\Filelist [Target Product] : Windows、Office などの製品名を表します。 [Target SP] : SP1 や SP2 などのサービス パック名を表します。 例 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP2\KB823980\Filelist この後に 0 〜 n までの番号が付いたサブキーがあります。各サブキーが更新としてインストールされた 1 つのファイルに対応します。ファイル一覧エントリで使用される一般的なキーを表 7 に示します。 表 7: ファイル一覧エントリのレジストリキー値 Default | 使用されません。 | BuildDate | ファイルの作成日。 | FileName | ファイル名。 | Location | ファイルのインストール先。 | Version | インストールされたファイルのバージョン。 |
|
プログラムの追加と削除キー
サービス パックおよび更新プログラムは RTM イメージへの追加と見なされ、[プログラムの追加と削除] (A/RP) の一覧に追加されます。A/RP は、レジストリ キー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall の情報を基に、インストールされたソフトウェアとそのアンインストール方法を認識します。このキーでは、修正プログラムの情報に加え、他のプログラムに関する情報も取得できます。更新プログラムは、KB 番号または Q 番号によって管理されています (次の表 8 を参照してください)。
インストールされている更新プログラムは、コントロール パネルの [プログラムの追加と削除] で確認できます。インストールされているプログラムの後に、インストールされている更新プログラムが表示されます。
A/RP レジストリ エントリには標準規則が定義されています。詳細については、「付録 E A/RP エントリの標準規則」を参照してください。
メモ パッケージをインストールするときに /n スイッチを指定すると、A/RP レジストリ エントリが書き込まれないことがあります。Q2 以前のインストーラ (「付録 A インストーラのバージョン管理と機能」を参照) を使用し、アンインストールなしオプションを選択してインストールした古いパッケージは、[プログラムの追加と削除] の一覧には表示されません。
表 8: [プログラムの追加と削除] のレジストリキー値
Default | 使用されません。 |
Display Name | [プログラムの追加と削除] の一覧に表示されるテキスト。 |
Display Version | インストールされた更新プログラムのバージョン (詳細については「更新パッケージのバージョン管理」を参照)。 |
HelpLink | サポート テキストおよび Microsoft サポート技術情報の Knowledge Base の文書へのリンク。 |
NoModify | [プログラムの追加と削除] に [変更] を表示するかどうかを指定します。 |
NoRepair | [サポート情報] ダイアログに [修復] を表示しません。 |
Publisher | 修正コードを発行した会社。 |
Uninstall String | 修正プログラムをアンインストールするコマンドの文字列。 |
URLInfoAbout | [サポート情報] ダイアログに表示される発行元の URL リンク。 |
修正プログラムレジストリエントリ
下記の修正プログラム レジストリ エントリは WinSE だけが使用している古いエントリです。キーの中には現在は使用されていないものもあります。このエントリに記録される情報について、次の表 9 で説明します。
例
HKEY_LOCAL_MACHINE \Software\Microsoft\WindowsNT\CurrentVersion\Hotfix\KB######
表 9: 修正プログラムのレジストリキー値
(Default) | 使用されません。 |
Backup Dir | バックアップ ファイルが保存されるディレクトリ。 |
Comments | 更新プログラムの種類と KB 番号。 |
Fix Description | 更新プログラムの種類と KB 番号。 |
Installed | 更新プログラムがインストールされているかどうかを示します。この情報が必要となるのは、更新プログラムが累加的なものであるためです。たとえば、1 月にリリースされた更新プログラム 1 と 2 月にリリースされた更新プログラム 2 があり、どちらにも Foo.dll が含まれているとします。6 月に更新プログラム 2 をインストールし、7 月に更新プログラム 1 をインストールしようとした場合、更新プログラム 1 のレジストリ エントリはゼロ (0) となります。これにより、更新プログラム 1 はインストールされなかったものの、更新プログラム 1 の機能は既にコンピュータに組み込まれていることが示されます。更新プログラム 2 の方が先にインストールされているため、更新プログラム 1 によって foo.dll に加えられる変更は抑止されるためです。 |
Installed By | 現在は使用されていません。次の更新キーを参照してください。 |
Installed On | 現在は使用されていません。次の更新キーを参照してください。 |
Service Pack | インストールした修正コードが組み込まれる予定のサービス パックを示します。この修正コードの対象となるオペレーティング システムのサービス パックをリリースする予定であり、その修正をサービス パックに含めない理由が存在しないことを前提としています。 |
Valid | 現在は使用されていません。値は常に 1 となります。 |
パッケージインストールの種類
サービス パックまたは更新プログラムのインストール形式には、更新プログラムのペイロードがインストール パッケージにすべて揃っている自己完結型とペイロードが動的に決定される高速インストールがあります。現在、高速インストールのパッケージは Windows Update サイトでのみ提供しています。ペイロードを含んだ自己完結型パッケージは Windows Update カタログから取得できます。
どちらの方法でペイロードを取得してもインストール手順は同じです。いずれの場合も Update.exe では同じコード パスによってインストールするファイルが特定されます。インストール中、Update.exe は既にインストールされているファイルを調べ、更新プログラムに含まれているファイルと同一またはそれより新しいものがないかどうかを確認します。更新プログラムに含まれているファイルと同一またはそれより新しいファイルが既にインストールされている場合、そのファイルの更新は不要です。高速インストールと自己完結型インストールのいずれにおいても、この手法が使用されています。次に、これら 2 種類のインストールについて詳しく説明します。
自己完結型インストール (完全インストール)
自己完結型インストール (標準インストールまたは完全インストールともいう) とは、更新としてインストールする必要のあるファイルがすべて含まれているインストール パッケージをいいます。ペイロード全体が使用できる状態で含まれているため、Update.exe はインストールする必要のあるファイルを特定し、インストールを実行します。このインストール方法はファイアウォールで保護された大規模な環境に適しています。この方法であれば、ファイアウォールがあるために個々のコンピュータからインターネットにアクセスできない場合や、インターネットからのインストールが禁止されている場合でもインストールが可能です。
高速インストール
自己完結型インストールとは異なり、高速インストールには更新のペイロードが含まれていません。更新に必要なファイルを調べ、インストールするファイルの一覧を作成して、それらのファイルを Windows Update サーバーから取得します。インストールする必要のあるファイルとコンピュータ上のファイルを比較し、既にインストールされているファイルより新しいファイルだけをダウンロードしてインストールします。
ネットワークインストール
ネットワーク インストール (詳細については「導入方法」を参照) には、インストーラに必要なディスク領域が少なくて済むという利点があります。ペイロードをネットワーク上に置くことによって、インストールの作業領域としてネットワーク上の保存場所を使用できるため、ハード ディスク領域を使用する必要がありません。このインストール方法は、コンピュータの記憶容量が限られている環境に適しています。ネットワーク インストールの詳細については、適切な導入ガイドを参照してください。
デバッグシンボル
デバッグ シンボルは、使用頻度が低かったため、現在は Windows Update Web サイトからダウンロードするパッケージには含まれていません。デバッグ シンボルを廃止したことにより、パッケージのサイズが平均で 30% 縮小しました。デバッグ シンボルが必要な場合は、Microsoft サポート技術情報の Knowledge Base の文書「修正プログラム パッケージにはデバッグ シンボル ファイルが含まれない」を参照してください。この文書では、デバッグ シンボルをダウンロードしインストールする方法について説明しています。
導入方法
サービス パックや更新をネットワーク環境のコンピュータに導入するには、いくつかの方法があります。たとえば、インストール オプションを指定して Update.exe を手動で実行する方法もあれば、SMS (Systems Management Server) や Windows インストーラ Sysprep を使用することもできます。さらに、共有ネットワーク フォルダを使用したり Microsoft ダウンロード センターから修正プログラムをダウンロードして更新を配布するという方法も可能です。基本的に、サービス パックと更新はほとんど同じ方法で導入できます。
Windows サービスパックの導入
次の表 10 は、サービス パックの導入方法に関する資料として最適な導入ガイドについてまとめたものです。これらのドキュメントには、サービス パックを単一システム環境および複数システム環境に導入する方法の詳細が記載されています。サービス パックをオペレーティング システムに導入する方法を検討する際には、必ずこれらのドキュメントを参照してください。
表 10: 導入ガイド
Windows サービスパックのスリップストリーム (複合) インストール
サービス パックの場合は、他の更新では使用できないスリップストリーム (複合) インストールという方法を使用できます。この方法は、オペレーティング システムをインストールする前にサービス パックをオペレーティング システムにプレインストールするというものです。スリップストリーム インストールには、インストールの前にオペレーティング システム イメージをサービス パックや更新を使用して更新できるという利点があります。このインストール方法を使用すると、コンピュータを 1 回のイメージング プロセスで完全に更新することができます。この方法を使用できるのは、Windows 2000、Windows XP、または Windows Server 2003 オペレーティング システム全体をインストールする場合です (スリップストリーム インストールを行う方法の詳細については、表 10 に示したドキュメントを参照してください)。
アプリケーションエラー報告 (Watson 報告)
2003 年 12 月にリリースされた Update.exe Version Q4 の特徴の 1 つとして、アプリケーション エラー報告 (Watson 報告) 機能が追加されたことがあります。この機能は、クラッシュ発生時の状況をユーザーの同意を得て Microsoft に報告するというものです。Microsoft に送信されるデータは、「End User Privacy Policy in Application Error Reporting」(英語) に記載された方針に基づいて扱われます。Update.exe の各バージョンにおけるアプリケーション エラー報告機能のサポート状況については、「付録 A インストーラのバージョン管理と機能」を参照してください。
更新の導入
ここでは、サービス パックおよび修正プログラムのさまざまなインストール方法について説明します。
有人モード
家庭や個人が管理する環境で広く使用されているインストール方法で、ユーザーによる操作を必要とします。一般に、このインストールは、いくつかのスイッチと組み合わせて実行します。スイッチの詳細については、「コマンド ライン スイッチ」を参照してください。
ネットワークフォルダからのインストール
個人が管理する環境の複数のコンピュータに更新プログラムをインストールするには、更新を共有ネットワーク ドライブに配置し、以下の手順を実行します。以下の手順では、更新するすべてのコンピュータからアクセス可能なネットワーク上の場所に配布フォルダを作成しています。
1. | ネットワーク上またはコンピュータ上に更新のファイルを保存する配布フォルダを作成します。 |
2. | 配布フォルダを右クリックし、[プロパティ] をクリックします。 |
3. | [共有] タブをクリックし、[このフォルダを共有する] をクリックします。 |
4. | [共有名] に配布フォルダの名前を入力します。 |
5. | [アクセス許可] をクリックし、このフォルダからユーザーが修正プログラムをインストールできるようにアクセス許可を入力します。 |
6. | NTFS ファイル システム パーティションがある場合は、[セキュリティ] タブをクリックし、表示されたアクセス許可が [共有] タブ内のアクセス許可と矛盾しないことを確認して、[OK] をクリックします。 |
7. | 手順 1. で作成した配布フォルダに修正プログラム パッケージをコピーします。 |
8. | ネットワーク上の共有配布フォルダから修正プログラムをインストールするには、[update name].exe を実行します。 たとえば、配布フォルダ Update_Folder から修正プログラムをインストールする場合は、次のように入力します。 \\servername\sharename\ Update_Folder\[update_name].exe 「コマンド ライン スイッチ」で説明したコマンド ライン オプションを使用することによって、インストールをカスタマイズすることができます。 |
メモ 連続したインストールを行う場合は、「連続したインストール」の説明を再確認してください。
インストールバッチファイル
バッチ ファイルを使用することによって、一度に複数の修正プログラムをインストールできます。ここでは、ネットワーク共有から複数の修正プログラムをインストールする状況として代表的な 2 つのシナリオに対応するバッチ ファイルの例を紹介します。1 つ目の例では、サービス パックと複数の修正プログラムを同時にインストールする方法を示します。インストーラが再起動の必要性を判断できるように、可能な限りこちらの方法を使用してください。2 つ目の例では、再起動が必要かどうかを判断する方法について説明します。
1. | サービス パックと更新を結合します。 この例では、サービス パックと修正プログラムのインストールを結合します。サービス パックのインストール後にコンピュータを再起動しないため、続けて更新を適用することができます。更新 (下記のバッチ ファイル例では Update_A) のインストール後に再起動が必要ではなくても、Update.exe はその前に行ったサービス パックのインストールで再起動が必要だったことを認識し、インストールが完了した時点でユーザーに再起動するよう指示します。
@ECHO OFF
SETLOCAL
REM Location of updates to install
SET PathOfFixes=Drive:\hotfix
%PATHTOFIXES%\SP_install.exe /Z /U
%PATHTOFIXES%\Update_A.exe /U
Update.exe の QChain 機能によって再起動の必要性を考慮せずに済むため、複数のインストールを連結し、すべてのインストールの Pending File Rename を 1 回の再起動で処理することができます。この例では、/U スイッチを使用してユーザー インターフェイスを非表示にしているため、ユーザーはこの処理に必要な情報の入力を要求されません。 |
2. | 再起動が必要かどうかを判断します。 再起動が必要かどうかがはっきりしない場合 (インストールした更新のいずれかで再起動が必要になる可能性がある場合)、以下のバッチ ファイルを使用してインストーラのリターン コードを評価し、再起動の必要性を判断します。
@ECHO OFF
SETLOCAL
REM Location of updates to install
SET PathOfFixes=Drive:\hotfix
REM Flag used to determine if a restart is required, initialize to 0
SET Reboot_Needed=0
%PathOfFixes%\update_a.exe /Z /U
IF ERRORLEVEL 3010 SET Reboot_Needed=1
%PathOfFixes%\update_B.exe /Z /U
IF ERRORLEVEL 3010 SET Reboot_Needed=1
%PathOfFixes%\Update_C.exe /Z /U
IF ERRORLEVEL 3010 SET Reboot_Needed=1
REM force restart here
IF %Reboot_Needed%.==1. Shutdown /r
この例では、インストーラからのリターン コードをチェックして、再起動が必要かどうかを判断します。更新プログラムをインストールするときには、こちらの方法を使用するようお勧めします。 メモ Windows XP では、上の例で使用したシャットダウン コマンドがオペレーティング システムに組み込まれており、既定で使用できます。Windows 2000 の場合は、同じ機能が Windows NT リソース キットのユーティリティとして提供されており (Shutdown.exe または Shutgui.exe)、これらのユーティリティを別途インストールする必要があります。 |
3. | 無人インストールの方法。 Update.exe の無人インストール機能を使用すると、更新プログラムおよびサービス パックのインストールを自動化できるため、ユーザーによる操作が不要になります。無人インストールの方法には、コマンド ライン スイッチを使用してカスタム バッチ インストールを作成する方法から、SMS や SUS などの自動化ソフトウェアを使用し、ネットワークを経由して更新やサービス パックをすべてのコンピュータにインストールするという方法まで、さまざまなものがあります。無人インストールの方法を検討する際の資料としては、「Microsoft Windows 2000 Guide to Unattended Setup」が最適です。このドキュメントは Unattend.doc というファイル名で Windows 2000 の付属 CD にも収められています。Windows XP コンピュータでは、Update.exe を使用して無人インストールを構築する代わりに Sysprep を使用することもできます。詳細については、「Sysprep の使用方法: はじめに」を参照してください。 |
導入のタイミング
修正プログラムの移行
修正プログラムの移行は、Microsoft Windows XP および Windows Server 2003 プラットフォームでのみ可能です。これらの環境で修正プログラムを移行すると、サービス パックのアップグレード時に同じ更新レベルを維持することができます。Windows XP と Windows Server 2003 では手順が異なりますが、同じ結果になります。サービス パックをリリースする前の数週間の間にリリースされた修正プログラムは、そのサービス パックに含められないことがあります。このような場合 WinSE では、移行可能な修正プログラムを提供しているため、サービス パックをインストールした後にそれらの修正プログラムを再度インストールする必要はありません。実際には、現在のオペレーティング システム リビジョン レベルに対する修正プログラムをインストールし、次のサービス パック レベルに対する修正プログラムをキャッシュします。次のサービス パックをインストールすると、キャッシュされていた修正プログラムがそのサービス パック バージョンに移行します。Windows XP のデュアル モード修正プログラムの詳細については、Microsoft サポート技術情報の Knowledge Base の文書「Windows XP のデュアル モード修正プログラム パッケージについて」を参照してください。Windows Server 2003 における修正プログラムの移行の詳細については、「Windows Server 2003 製品アップデート パッケージの内容に関する説明」を参照してください。修正プログラムの移行に使用されるディレクトリの構造については、「更新パッケージの内容」を参照してください。
デュアル モード インストールの場合はパッケージ内にファイルが 1 つ追加されています。この Xpsp1hfm.exe というファイルは、アップグレードされたサービス パックへの新しい更新の移行を管理するもので、インストールする必要がある更新のバージョンを特定します。デュアル モード インストールでは、パッケージの内容を展開してから、Update.exe ではなく Xpsp1hfm.exe を実行し、インストールを行います。このとき、Update.exe に適用するスイッチと同じスイッチを Xpsp1hfm.exe にも適用できます。
ブロックリスト - 既にインストールされている更新の上書き
サービス パック サイクルの終わりにリリースされ、次のサービス パックには含められない更新を "ブロックリスト修正" といいます。このような "端境期" の更新は次のサービス パックをリリースする直前の短い期間に作成されるもので、数は多くありません。サービス パックのインストール時にこのような更新は上書きされ、それらの更新が無人モードまたは対話モードで行われることを示すインストーラ ログ エントリが作成されます。インストールを開始すると、"システム構成を調べています。" というメッセージに続き、以下のメッセージが表示されます。
"このサービス パックには、コンピュータにインストールされていない修正プログラムに対応するファイルが含まれています。問題が発生する可能性があるため、これらのファイルはインストールされません。
これらの修正プログラムがサービス パックとインストール済みのホットフィックスの両方に含まれるようにするためには、サービス パックをインストールする前またはインストールした後で以下のホットフィックスの更新バージョンを入手し、インストールする必要があります。これらのホットフィックスは svcpack.log ファイルにも列記されています。"
サービス パックのインストール中に上書きされた更新は、もう一度インストールする必要があります。どの更新が上書きされたかを調べるには、サービス パックのリリース ノートを参照するか、Updtblk.inf ファイルの内容をチェックしてください。上書きされる更新を特定できたら、その更新の更新バージョンをダウンロードし、サービス パックのインストール後に続けてインストールします。
ブロックリスト修正は、更新のインストールにも関係します。この場合は、インストールされる更新のバージョンが既に古いことを意味します。この問題が発生した場合は、その更新の新しいバージョンをダウンロードし、インストールしてください。次のようなメッセージが表示されます。
"このホットフィックスは、古いファイルが含まれているため、インストールできません。修正プログラム KB###### の最新バージョンをダウンロードし、インストールしてください。"
ブロックリスト修正の更新の詳細については、次の Microsoft サポート技術情報の Knowledge Base の文書を参照してください。
810077 - いつホットフィックスが SP3 のどの前バージョンにインストールされるコンピュータに SP3 をインストールするか表示される警告を抑制する方法
309601 - Windows 2000 Service Pack 3 (SP3) と競合する Windows 2000 修正プログラム
更新パッケージの内容
更新パッケージには、パッケージ インストーラのほかに、インストーラの関連ファイル (.inf ファイルなど)、およびペイロード (更新されるファイル) が収められています。ここでは、バイナリ ファイル、ログ ファイル、およびこれらのファイルの構造について説明します。
バイナリ ファイル
"パッケージ" というときには、通常はサービス パックまたは更新の内容を意味しています。どちらの場合も、使用されているロジックとインストール テクノロジは同じです。次の表 11 ではインストーラのバイナリ ファイルについて説明します。この説明はサービス パックと修正プログラムのどちらにも当てはまります。
表 11: インストーラのバイナリファイル
branches.inf | ブランチの階層関係を定義します。 |
custom.dll または spcustom.dll | このパッケージ インストーラに含まれない機能を他のチームが追加できるように用意されたカスタム dll ファイルです。このパッケージ インストーラを使用するチームが増えるに従い、custom.dll ファイルの数も増加します。Windows Sustained Engineering チームが使用している custom.dll の名前は spcustom.dll です (このファイルの用途については、「Custom.dll」を参照してください)。 |
イベント ログ DLL (spmsg.dll) | spmsg.dll は、インストーラがイベント ビューアに表示するイベントを記録するためのファイルです。spmsg.dll は、リリースされるどのサービス パックおよび修正プログラムにも付属しています。オペレーティング システムのバージョンにかかわらず同じ spmsg.dll が使用されます。 |
spnres.dll | サービス パックのリソース バイナリであり、サービス パックに追加されたリソース文字列をサポートします。 |
spunInst.exe (アンインストーラ) | このファイルは、復元されるファイルが保存されるアンインストール ディレクトリにあります。 |
update.exe (インストーラ) | パッケージ インストーラのコアであり、パッケージに含まれる .inf ファイルによって動作する .inf 駆動型インストーラです。 |
update.inf | インストールするファイル、インストールする場所、更新するレジストリ キー、インストール中に表示するテキストなどの可変情報をインストーラに渡すことによってインストールを実行するファイルです。イベント ログの名前や場所なども指定します。 |
update.ver | ペイロードのバージョン、サイズ、ハッシュ情報が記述されています。 |
update_RTMGDR | 複数ブランチ対応のインストールで使用される update.inf ファイルの 1 つです。 |
update_RTMQFE | 複数ブランチ対応のインストールで使用される update.inf ファイルの 1 つです。 |
updatebr.inf | 既定のブランチを定義するファイルであり、update.inf ファイルおよびセットアップ ファイルへのポインタが含まれています。 |
Custom.dll
custom.dll は、パッケージ インストーラがサポートしていないカスタム機能を組み込む目的で使用されます。Sustained Engineering チームでは、このファイルを使用してパッケージ インストーラに含まれていない機能を提供しています。custom.dll の名前は変更可能であり、ファイル名は .inf ファイルの [Configuration] セクションに指定されています。このファイルによって組み込まれたカスタム機能はインストール プロセスのさまざまな段階で実行されます。
.inf ファイル
.inf ファイルはインストールするファイルの詳細をインストーラに渡します。このファイルによって、更新をリリースするたびにカスタム アクションをインストーラに定義する必要がなくなります。Windows パッケージ インストーラでは複数の .inf ファイルが使用されます。どの .inf ファイルが使用されるかはパッケージの種類によって異なります。update.inf ファイルはすべてのパッケージで使用されます。branches.inf ファイルと updatebr.inf ファイルを使用するパッケージもあります。各パッケージに含まれるファイルの詳細については、「更新パッケージの内容」を参照してください。
Update.inf
update.inf ファイルは、Update.exe に渡されるディレクティブのコアです。複数ブランチ対応のインストールでは、このファイルは修飾名 (update_rtmgdr.inf および update_rtmqfe.inf) で表されます (詳細については、「複数ブランチ対応の .inf ファイル」を参照してください)。update.inf ファイルの構造は柔軟に拡張可能です。最上位レベルでは、更新するオペレーティング システム バージョン情報、変更が必要なレジストリ エントリ、インストール中に実行するカスタム機能などの情報を Update.exe に渡します。このパッケージ インストーラで使用されている .inf ファイルは、MSDN の「Creating an INF file」(英語) に記載された .inf ファイルとよく似ています。異なる点もありますが、ファイルの基本的な構文は同じです。パッチのインストールに使用されるほとんどの update.inf ファイルには、共通のセクションが数多くあります。「付録 B Update.inf ファイル」に、そのような共通のセクションの一覧があります。
複数ブランチ対応の .inf ファイル
複数ブランチをサポートするためには、update_gdr.inf と update_qfe.inf という update.inf ファイルの 2 つのバージョンが必要となります (2 つのファイルの名前が異なるのは、同じディレクトリにあるからです)。他にも updatebr.inf ファイルと branches.inf ファイルの 2 つの .inf ファイルが必要です。これらはブランチを定義したり、ブランチの関係を定義したりするものです。
Branches.inf
このファイルには、更新がどのブランチから作成されたかが示され、ブランチの階層も定義されています。インストール プロセス中に、システムの構成と branches.inf の内容が比較され、インストールが必要なブランチが決定されます。このファイルは、修正プログラムの以前のバージョンを新しいバージョンに移行する必要がある場合にも使用されます。更新のインストールを開始すると、branches.inf ファイルがコンピュータにコピーされます。また、このファイルはバージョン管理されているため、新しいバージョンが作成された場合に対応できます。このファイルの新しいバージョンが別の更新に付属していた場合には、新バージョンに更新されます。
Updatebr.inf
updatebr.inf ファイルには 2 つの目的があります。1 つは共通ファイルと複数ブランチ対応のファイル構造における共通ファイルの位置を定義することであり、もう 1 つはインストールするブランチと update.inf ファイルとの関係を定義することです。複数ブランチ対応のインストールでは、インストールするブランチによって必要となるファイル セットが異なるため、それに対応できるよう複数の update.inf ファイルが更新に付属しています。updatebr.inf の重要な目的の 1 つは、ブランチを適切な update.inf ファイル (update_rtmqfe.inf または update_rtmqfe.inf) にリンクすることです。
インストーラ ログ ファイル
更新またはサービス パックのインストール中には複数のインストーラ ログ ファイルが生成されます。これらのログ ファイルには、インストールの状態などの有用な情報が記録されます。サービス パックまたは更新プログラムをインストールするたびに、新しいログ ファイルが生成されます。インストーラ ログ ファイルは Windows root (%windir%) ディレクトリにあり、ログ ファイルであると簡単にわかる名前が付いています。たとえば、Microsoft サポート技術情報の Knowledge Base の文書 824146 に関連する更新プログラムをインストールした場合、インストーラ ログ ファイルの名前は KB824146.log となります。「付録 D サンプル インストーラ ログ」では、インストーラ ログの例を挙げ、記録された情報の詳細について説明しています。
ログの名前と場所
インストーラ ログの名前は update.inf ファイルに定義されています (場所は定義されません)。.inf ファイルにログ ファイルの名前を定義するエントリがあります。[Strings] セクションの変数 InstallLogFileName を確認してください。この変数は、通常は %SP_SHORT_TITLE%.log に設定され、更新の名前に解決されます。Windows Sustained Engineering が使用している標準のログ ファイル名の一覧は、以下のとおりです。
| • | サービスパックのインストール svcpack.log |
| • | サービスパックのアンインストール spuninst.log |
| • | 修正プログラムのインストール Q123456.log |
| • | 修正プログラムのアンインストール Q123456UnInst.log |
ログの内容
インストーラ ログ ファイルには、主として以下の情報が記録されます。
| • | コマンド ライン引数 |
| • | パッケージのインストール先 |
| • | レジストリからの Pending File Rename |
| • | タイミング統計 |
| • | ディスク領域の使用量 |
| • | OEM ファイル チェックの結果 |
| • | ファイルのコピー操作 |
| • | レジストリの更新 |
| • | custom.dll から実行されたプロセスとリターン コード |
このインストーラの Version Q4 以降では、ログ メカニズムの頑強性が向上しています。この節および付録の説明は Version Q3 に関するものです。インストーラのバージョン管理の詳細については、「付録 A インストーラのバージョン管理と機能」を参照してください。
ログエントリ
インストーラ ログには、エラーのように見えて、実は情報の提供を目的としているエントリがあります。エラーのように見えるのは、このインストーラが標準の Windows SetupAPI を使用しており、書式およびエントリの設定機能に限界があるからです。次の表 12 に、エラーと混同しやすいインストーラ ログ エントリの例を示します。
表 12: エラーと混同しやすいログエントリ
DoInstallation : CleanPFR failed : | レジストリの PFR 一覧をクリーンアップしようとしたところ、PFR にエントリがなかったことを示しています。 |
FetchSourceURL : SetupOpenInfFile Failed to open file : d:\20fc32a210eecc6746827750294191cb\i386\update\update.url | この状況は、パッチング モードにおいて更新の一部をインターネットからインストールした場合のみエラーと見なします。更新に必要なすべてのファイルが手元に用意されている場合は、エラーではありません。 |
DoInstallation : FetchSourceURL for d:\20fc32a210eecc6746827750294191cb\i386\update\update.inf Failed | この状況は、パッチング モードにおいて更新の一部をインターネットからインストールした場合のみエラーと見なします。更新に必要なすべてのファイルが手元に用意されている場合は、エラーではありません。 |
BuildCabinetManifest:SetupOpenInfFile failed with error INVALID_HANDLE_VALUE | このファイルがパッケージに含まれているかどうかをチェックしていることを示すエントリです。このエラーはファイルがパッケージに含まれていないことを示しています。 |
Failed Deleting C:\WINNT\system32\msiinst.tmp 2 | これはクリーンアップ エラーです。作成されたディレクトリおよびファイルをすべてクリーンアップする必要があるにもかかわらず、ファイルが作成されていないため、削除できなかったことを示しています。 |
RegisterFile:RegOpenKeyEx for SOFTWARE\Microsoft\Updates\Windows 2000\SP4\Q811493\Filelist\3 Failed: 0x2 | 検索していたレジストリ キーが存在しないことを知らせるエントリです。この場合、更新 811493 がインストールされていない可能性があります。 |
LoadFileQueues: SetupGetSourceFileLocation for halacpi.dll failed: 0xe0000102 | hal*.* ファイルについて述べているエラーは、ほとんどの場合、エラーではありません。インストーラは必ずパッケージの hal*.* ファイルを検索し、見つかりしだいインストールします。 |
Update.exe のログ エントリについては現在見直しを進めており、将来のバージョンで大幅に変更されます。上記のエントリは Q3 およびそれ以前のバージョンのものです。実際のログ ファイルの内容と異なっている場合は、そのログを作成したインストーラのバージョンを確認してください (詳細については、「付録 A インストーラのバージョン管理と機能」を参照してください)。
ファイル構造
展開したパッケージの内容は、ハード ディスクの解凍先フォルダ内の複数のサブディレクトリに一貫した方法で保存されます。解凍先のフォルダ名はユーザーが指定できます。指定しなかった場合は、現在のドライブの root ディレクトリにランダムな名前のフォルダが作成されます。このディレクトリには、インストーラ、関連ファイル、およびペイロードが保存されます。ディレクトリ構造には 3 つの種類があります。どのディレクトリ構造が作成されるかは、パッケージの古さ、種類、および更新の対象となるオペレーティング システムによって決まります。以下に、標準、デュアル モード、複数ブランチ対応の各ディレクトリ構造を示します。表 12 は、各オペレーティング システムで一般的なパッケージの種類を示しています。パッケージの展開内容に関して "root ディレクトリ" という用語は、パッケージの解凍先となるフォルダと同じものを指します。
表 12: オペレーティングシステムごとのディレクトリ構造
標準 | ○ | ○ | N/A |
デュアル モード | N/A | ○ | N/A |
複数ブランチ対応 | N/A | N/A | ○ |
標準ファイル構造
標準ディレクトリ構造は 3 種類の中で最も単純です (次の図 2 を参照してください)。ファイルは解凍先の root ディレクトリか Update ディレクトリのいずれかに保存されます。次の表 13 は、標準ディレクトリ構造における各ファイル、ファイルの保存先、およびファイルの目的をまとめたものです。

図 2: 標準ファイル構造の例
このファイル構造の例は、セキュリティ情報 MS03-026 に関連する Windows 2000 の更新 823980 をダウンロードすると確認できます。
表 13: 標準ファイル構造における各ファイルの目的と保存先
spuninst.exe | root | 実行可能ファイルと共にインストールされたアンインストール プログラム。 |
spmsg.dll | root | メッセージをイベント ログに書き込むメッセージング DLL。 |
spnres.dll | root | 新しいリソースをサービス パックに組み込むリソース DLL (詳細については、後の SPnRes.dll を参照してください)。 |
empty.cat | root | セキュリティ カタログ (Windows 2000 のみ)。 |
eula.txt | root\Update | 対話型セットアップにおいて表示される使用許諾契約書。 |
KB######.cat | root\Update | セキュリティ カタログ。 |
custom.dll | root\Update | インストールで使用するカスタム機能が含まれた DLL。 |
update.exe | root\Update | 修正コードのインストールを行う実行可能ファイル。 |
update.inf | root\Update | インストールの変数および関連情報を提供します。 |
updblk.inf | root\Update | ブロックリスト更新が一覧されています (詳細については、「ブロックリスト - 既にインストールされている更新の上書き」を参照してください)。 |
update.ver | root\Update | ペイロードのバージョン、サイズ、ハッシュ情報が記述されています。 |
パッケージ ペイロード | root | 更新としてインストールされるファイル。 |
デュアルモードファイル構造
デュアル モード インストールのファイル構造は標準インストールの場合よりやや複雑です。デュアル モード インストールでは、同じオペレーティング システムの 2 つのバージョンに対応できるようにペイロードが拡張されています。たとえば、1 つの更新を Windows XP RTM と Windows XP SP1 の両方に適用することができます (次の図 3 を参照してください)。デュアル モード インストールは Windows XP にのみ対応しています。ここでは、Windows XP RTM および Windows XP SP1 の更新を目的として作成されたデュアル モード インストール パッケージを前提としています。デュアル モード インストールの詳細と、このようなインストールが必要となる理由については、「導入のタイミング」の「修正プログラムの移行」を参照してください。
デュアル モード インストールの場合、ファイルは次の 4 つのディレクトリに展開されます。
1. | root ディレクトリ どのペイロードを使用するかを決定する実行可能ファイルがあります。 |
2. | Common ディレクトリ 両方のインストール バージョンで使用されるファイルがあります。 |
3. | RTM ディレクトリ RTM インストール用のペイロード関連ファイルがあります。 |
4. | SP1 ディレクトリ SP1 インストール用のペイロード関連ファイルがあります。 |

図 3: デュアルモードファイル構造の例
このファイル構造の例は、セキュリティ情報 MS03-026 に関連する Windows XP の更新 823980 をダウンロードすると確認できます。表 14 は、各ファイルの目的と保存先を示しています。
表 14: デュアルモードファイル構造における各ファイルの目的と保存先
Xpsp1hfm | root | デュアル モードでのみ使用されるファイルであり、インストールする修正コードのバージョンを特定し、インストーラを起動します。 |
spuninst.exe | root\Common | 実行可能ファイルと共にインストールされたアンインストール プログラム。 |
spmsg.dll | root\Common | メッセージをイベント ログに書き込むメッセージング DLL。 |
spnres.dll | root\SP1 と root\SP2 のいずれか一方または両方 | 新しいリソースをサービス パックに組み込むリソース DLL (詳細については、後の SPnRes.dll を参照してください)。必要に応じてパッケージに追加されます。 |
eula.txt | root\Common | 対話型セットアップにおいて表示される使用許諾契約書。 |
KB######.cat | root\SP1\Update root\SP2\Update | セキュリティ カタログ。 |
custom.dll | root\Common | インストールで使用するカスタム機能が含まれた DLL。 |
update.exe | root\Common | 修正コードのインストールを行う実行可能ファイル。 |
update.inf | root\SP1\Update root\SP2\Update | インストールの変数および関連情報を提供します。 |
updblk.inf | root\SP1\Update root\SP2\Update | ブロックリスト更新が一覧されています (詳細については、「ブロックリスト - 既にインストールされている更新の上書き」を参照してください)。 |
update.ver | root\SP1\Update root\SP2\Update | ペイロードのバージョン、サイズ、ハッシュ情報が記述されています。 |
ペイロード | root\SP1 root\SP2 | システムにインストールされるファイル。 |
複数ブランチ対応ファイル構造
複数ブランチ対応インストールは Windows Server 2003 でのみ使用可能であり、デュアル モード インストールの場合と同じように、1 つのパッケージで複数のインストール シナリオに対応します。複数ブランチ対応の更新では、デュアル モード インストールのシナリオに対応できるほか、オペレーティング システムのサービス パック レベルが同じである 2 種類の開発環境も更新することができます。あるサービス パックから次のサービス パックがリリースされるまでの間に、ブランチと呼ばれる開発環境から更新がリリースされます。ブランチには、GDR (General Distribution Releases) ブランチと修正プログラム ブランチの 2 つがあります。セキュリティ上の脆弱性などの広範囲に及ぶ重大な問題への対応策として Microsoft がリリースする更新は GDR と呼ばれ、Windows Update から配布されます。このような更新は他の修正プログラムとは別に GDR ブランチで作成されます。修正プログラムは、ユーザーから要望のあった特殊な問題に対処する目的で Microsoft 製品サポート サービスが配布するもので、GDR ほどの徹底した検証は行われません。このように 2 つのブランチがあることで、GDR を入手して広範囲に及ぶ重大な問題 (セキュリティ上の脆弱性など) だけを解決し、修正プログラムのコード変更を加えないことができるため、ユーザーにとってリスクが小さくなります。複数ブランチの詳細については、「Windows Server 2003 製品アップデート パッケージの内容に関する説明」を参照してください。どちらのブランチで作成されたものであっても、修正コードは必ず次のサービス パックに含められます。
複数ブランチ対応の更新を解凍すると、root ディレクトリの下に更新ディレクトリと共に関連ブランチのバイナリ ファイルが収められた複数のディレクトリが作成されます。これらのディレクトリには図 4 に示すような名前が付きます。ディレクトリ名の前半は製品のマイルストーンを表します (たとえば、RTM は Release To Market を意味し、SP1 は Service Pack 1 を意味します)。ディレクトリ名の後半が更新を作成したブランチ (開発環境) を表します。次の図では、GDR と QFE がブランチを表しています (複数ブランチ対応の更新では、QFE が修正プログラムを意味する略語として使用されており、修正プログラム ブランチを表す標準の名前となっています)。
このディレクトリ構造では、インストーラとペイロードによってディレクトリが分けられています。インストーラは更新のインストールに必要な関連ファイルと共に Update ディレクトリに保存され、ペイロードは RTMQFE と RTMGDR の 2 つのディレクトリに保存されます。

図 4: 複数ブランチ対応ファイル構造の例
このファイル構造の例は、セキュリティ情報 MS03-026 に関連する Windows Server 2003 の更新 823980 をダウンロードすると確認できます。表 15 は、各ファイルの目的と保存先を示しています。
表 15: 複数ブランチ対応ファイル構造における各ファイルの目的と保存先
spuninst.exe | root | 実行可能ファイルと共にインストールされたアンインストール プログラム。 |
spmsg.dll | root | メッセージをイベント ログに書き込むメッセージング DLL。 |
eula.txt | root\Update | 対話型セットアップにおいて表示される使用許諾契約書。 |
KB######.cat | root\Update | セキュリティ カタログ。 |
custom.dll | root\Update | インストールで使用するカスタム機能が含まれた DLL。 |
update.exe | root\Update | 修正コードのインストールを行う実行可能ファイル。 |
update_rtmgdr.inf | root\Update | RTMGDR インストールの変数および関連情報を提供します。 |
update_rtmqfe.inf | root\Update | RTMQFE インストールの変数および関連情報を提供します。 |
branches.inf | root\Update | 複数ブランチ対応インストールのブランチ階層が定義されています。 |
updatebr.inf | root\Update | 複数ブランチ対応インストールの既定のブランチが定義されています。 |
updblk.inf | root\Update | ブロックリスト更新が一覧されています (詳細については、「ブロックリスト - 既にインストールされている更新の上書き」を参照してください)。 |
update.ver | root\Update | ペイロードのバージョン、サイズ、ハッシュ情報が記述されています。 |
spnres.dll | root\RTMGDR root\RTMQFE | 新しいリソースをサービス パックに組み込むリソース DLL (詳細については、後の SPnRes.dll を参照してください)。この例では、このファイルは特別な処置を加えられず、必要に応じてペイロードに組み込まれます。 |
パッケージ ペイロード | root\RTMGDR root\RTMQFE | システムにインストールされるファイル。 |
まとめ
Microsoft の Windows パッケージ インストーラは、オペレーティング システムおよびインストール済み製品にサービス パックや更新を適用することを目的とした全機能搭載のインストーラです。このインストーラは、ユーザーや製品グループの要求に応えながら発展していきます。標準モードやネットワーク インストールなどのインストール方法を使用できるほか、インストール バッチ ファイルを使用してインストーラの処理を制御することもできます。導入方法を検討する際の情報源としては、サービス パックに付属の導入ガイドが最適です。
このドキュメントでは、インストーラがファイルのコピー以外にどのような操作を実行するのかを十分に理解できるよう、インストーラの機能について詳しく説明しました。また、レジストリに加えられる変更やレジストリ エントリの働きについても詳しく解説し、インストール ログ ファイルに書き込まれる内容にも触れました。さらに、パッケージ構造にも説明を加え、パッケージの主要なディレクトリ構造などを紹介しました。
このドキュメントは 2003 年 12 月現在のインストーラ テクノロジに関するものです。インストーラの機能がユーザーの要求に対応して変更されたときには、このドキュメントにも変更が加えられるため、改訂版が発行されていないかどうかを定期的にチェックしてください。
付録 A インストーラのバージョン管理と機能
バージョン管理
インストーラの統一を目的として、さまざまな製品グループがコード修正のインストーラを Update.exe に切り替え始めています。効率性をさらに高めるために、2003 年、Update.exe の開発チームは開発サイクルを四半期ベースに変更し、Update.exe の新バージョンを 3 か月ごとにリリースしました。2004 年は、1 年を 3 つの期間に分割し、4 か月ごとに新リリースを提供する予定です。
修正プログラムについては、最新のインストーラ機能と組み合わせて動作を検証します。したがって、エラーの発生を防止するためには、付属の Update.exe とは異なるバージョンの Update.exe で修正プログラムをインストールしないことが必要です。
各インストーラ バージョンの機能
次の表は、Update.exe の各バージョンの主要な追加機能とリリース時期をまとめたものです。個々のインストーラ機能について、Update.exe の各バージョンと機能の相互参照を示しています。この表に挙げた機能の多くは、エンド ユーザーへの直接的な影響はありません。更新パッケージ インストーラを採用する Microsoft チームと追加機能を必要とする Microsoft チームが一致しない場合もあります。
表 16: 各インストーラバージョンの機能
Q1 | 5.3.16.5 | Update.exe ログの拡張 アンインストール UI の更新 リカバリ コンソールからのアンインストール 修正プログラムのエントリを [プログラムの追加と削除] に追加 使用許諾契約書 (EULA) の印刷 | 2003 年 3 月 |
Q2 | 5.3.18.6 | セーフ モードでインストール/アンインストールを行った場合の警告 アンインストール スイッチの追加 /N を指定してインストールしたパッケージを [プログラムの追加と削除] の一覧に表示 | 2003 年 6 月 |
Q3 | 5.3.24.4 | .inf ファイルに前提条件のセクションを追加 クラッシュ エラー以外のエラーを対象とする Watson 報告機能の統合 標準コマンド ライン インストーラ スイッチのサポート | 2003 年 9 月 |
Q4 | TBD | TBD | TBD |
メモ Windows Server 2003 の初期の更新は、バージョン 5.3.17.9 の Q2 インストーラと共にリリースされました。このバージョンの機能セットは、上に記載されている Q2 インストーラのものと同じです。
インストーラのバージョン確認
インストーラに追加された機能が理解できたら、インストーラのバージョンを見分けられるようになることが必要です。そのためには、パッケージの内容を展開します。展開したら、該当するパッケージのディレクトリ構造の表を使用して Update.exe を探します。バージョン番号を表示するには、まず Update.exe を右クリックし、ショートカット メニューの [プロパティ] をクリックします。[update.exe のプロパティ] ダイアログ ボックスの [バージョン情報] タブをクリックします (次の図 5 を参照してください)。

図 5: インストーラのバージョンの例
付録 B Update.inf ファイル
ここでは、Update.inf ファイルの主要なセクションについて説明します。このリファレンスを参照するときには、.inf ファイルではエントリの位置が意味を持たないことに留意してください。ただし、ほとんどのファイルでは一定の順序に従ってエントリが配置されています。次に挙げるサンプル ファイルでは、わかりやすくするためにエントリの順序を変えています。
Version 更新が適用される製品のバージョンを示します。このセクションのエントリによって、更新が適用可能なバージョンの範囲が定義されます。ToUpdate の値は更新できる最低バージョンを示し、Max の付いている値は最高バージョンを示します (このバージョン範囲はレジストリ エントリ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ CurrentBuildNumber の設定と照合されます)。
Version セクションの一般的なエントリは以下のとおりです。
| • | Signature="signature-name" Update.exe はインストール先のプラットフォームとして NT プラットフォームのみをサポートするため、署名は常に $Windows NT$ となります。 |
| • | NtBuildToUpdate=build number このパッケージを適用できる Windows の最小ビルド番号 (4 桁) です。 |
| • | MaxNtBuildToUpdate=build number このパッケージを適用できる Windows の最大ビルド番号 (4 桁) です。 |
| • | NtMajorVersionToUpdate=minimum OS major version number このパッケージを適用できる最小メジャー バージョン番号です。 |
| • | MaxNtMajorVersionToUpdate =maximum OS major version number このパッケージを適用できる最大メジャー バージョン番号です。 |
| • | NtMinorVersionToUpdate=Minimum OS minor version number このパッケージを適用できる最小マイナー バージョン番号です。 |
| • | MaxNtMinorVersionToUpdate=Maximum OS minor version number このパッケージを適用できる最大マイナー バージョン番号です。 |
| • | MinNtServicePackVersion=Minimum service pack level number インストールの最低サービス パック レベル (この値はサービス パック レベルに 256 を乗じたもの) です。 |
| • | MaxNtServicePackVersion=Maximum service pack level number インストールの最高サービス パック レベル (この値はサービス パック レベルに 256 を乗じたもの) です。 |
| • | ThisServicePackVersion=current service pack level number パッケージの適用対象となる現在のサービス パック レベル (この値はサービス パック レベルに 256 を乗じたもの) です。 |
| • | LanguageType=%LangTypeValue% このパッケージが対応しているシステム言語の値。CD と一致している必要があります。このフィールドが空白であるか、0x0 に設定されている場合、パッケージはどのような言語のシステムにもインストールできます。LangTypeValue は [String] セクションに定義された変数です。 |
| • | CatalogFile=catalog file INF ファイルが登録されたカタログ ファイルです。
[Version]
Signature="$Windows NT$"
LanguageType=%LangTypeValue%
NtBuildToUpdate=3790
MaxNtBuildToUpdate=3790
NtMajorVersionToUpdate=5
MaxNtMajorVersionToUpdate=5
NtMinorVersionToUpdate=2
MaxNtMinorVersionToUpdate=2
MinNtServicePackVersion=0
MaxNtServicePackVersion=0
ThisServicePackVersion=0
CatalogFile=%SP_SHORT_TITLE%.cat
|
DirectoryID.Include 実行時にプロセスを使用してインストール先を決定します。
次の例では、AddDirID が後続の RISAdm.DirID セクションを指し示しています。RISAdm.DirID セクションには実行されるアクションが指定されます。この例では、SPCustom.dll RISAdminSection に含まれている機能です。
[DirectoryId.Include]
AddDirId=RISAdm.DirId
…
[RISAdm.DirId]
DirId = 65625
CustomFunction=SpCustom.dll,GetRISAdminPathName
InstallFromSection = RISAdminSection
CopyFlags = SP_COPY_FORCE_NEWER | SP_COPY_REPLACEONLY
ProductCatalogsToInstall インストールされるカタログの名前と場所を示します。この例で使用されている変数 %SP_SHORT_TITLE% は .inf ファイルの Strings セクションで解決されます (以下を参照してください)。
[ProductCatalogsToInstall]
%SP_SHORT_TITLE%.cat, update\%SP_SHORT_TITLE%.cat
ProductInstall.CopyFilesAlways インストール中にコンピュータに必ずコピーすることが必要なファイルの詳細があるセクションを示します。
[ProductInstall.CopyFilesAlways]
CopyFiles=CopyAlways.System32.files
CopyFiles=CopyAlways.Inf.files
ProductInstall.CopyFilesAlways.platform_name 必ずインストールされるファイルがプラットフォーム名ごとに定義されています。プラットフォーム名はセクション名の終わりにあります。次の例では、Professional および Server プラットフォームで使用されるファイルの詳細が記述されています。
[ProductInstall.CopyFilesAlways.Professional]
CopyFiles=CopyAlways.Prf.System32.files
[ProductInstall.CopyFilesAlways.Server]
CopyFiles=CopyAlways.Srv.System32.files
CopyFiles=CopyAlways.Srv.Inf.files
ProductInstall.ReplaceFilesIfExist 既にインストールされている場合に置き換えられるファイルが指定されています。コピーするファイルの詳細については、CopyFiles ディレクティブで参照される別のセクションにあります。次の例の CopyFiles ディレクティブではコピーするファイルを指定するため、System32.files と Cache.files という 2 つのセクションを参照しています。
[ProductInstall.ReplaceFilesIfExist]
CopyFiles=System32.files
CopyFiles=Cache.files
…
[System32.files]
urlmon.dll,RTMGDR\urlmon.dll
[Cache.files]
urlmon.dll,RTMGDR\urlmon.dll
ProductInstall.GlobalRegistryChanges.Install インストール中に追加されるレジストリ キーがあるセクションを示します。次の例の AddReg ディレクティブは、レジストリ キーが指定された Product.Add.Reg セクションを参照しています。
ProductInstall.GlobalRegistryChanges.Install]
AddReg=Product.Add.Reg
…
[Product.Add.Reg]
HKLM,SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed",0x10001,1
[ProductInstall.CopyFilesAlways.Professional]
DestinationDirs ファイルのインストール先ディレクトリを定義します。次の例では、システム ディレクトリが %windir%\system32 と定義され、システム .dll キャッシュ ディレクトリが %windir%\system32\DllCache と定義されています。
このセクションは後続の System32.files セクションおよび Cache.files セクションを参照しています。DestinationDirs セクションには、ターゲット ディレクトリの定義とインストールの対象となるファイルの一覧が指定されたセクションへのポインタがあります。パッケージ インストーラは、DestinationDirs セクションを読み取った後、インストールするファイルの名前とコピー元を System32.files セクションおよび Cache.files セクションから取得します。