AnswerFile の調査
注: Microsoft Windows XP (SP1 以降)、Microsoft Windows Server 2003、およびそれ以降のオペレーティング システムでは、ベンダーが提供するネットワーク アップグレードはサポートされていません。
アップグレードをしているのシステムに「ファイルのコピーのセットアップ」進行状況バーが表示される直前に、AnswerFile が作成されます。 NetSetup とベンダーが提供するネットワーク移行 DLL は、AnswerFile にセクションを作成し、Winnt32 アップグレード のフェーズ中にこのセクションにエントリを書き込みます。
C:\$win_nt$.~bt\winnt.sif を %TEMP% にコピーすると、AnswerFile を調べることができます。 AnswerFile をコピーしたら、[キャンセル] をクリックしてファイルのコピーを取り消すことができます。 ファイルのコピーが完了するまで待つ必要はありません。
AnswerFile の最上位セクションと、ネットワーク コンポーネントに関わる各セクションに含まれる対応するエントリを次の表で示します。
セクション | 含まれるエントリ |
---|---|
NetAdapters |
ネットワーク アダプター (ISDN アダプターを含む) |
AsyncAdapters |
非同期アダプタ |
NetProtocols |
ネットワーク プロトコル |
NetServices |
ネットワーク サービス |
NetClients |
ネットワーク クライアント |
注:NetClient コンポーネントは、Windows 8.1、Windows Server 2012 R2 以降では非推奨です。
それぞれのWinnt32 フェーズ中に検出されたネットワーク コンポーネントでNetSetup は AnswerFile の適切な最上位セクションにエントリを書き込みます。 各エントリは次の形式になっています。
Params。postupgrade-ID
アップグレード後 ID エントリは、NetSetup がコンポーネントの netmap.inf ファイルより取得した Windows 2000 以降のデバイス ID です。
各エントリでは、AnswerFile 内のコンポーネントのパラメーター セクションの名前を指定します。 たとえば、コンポーネントの Windows 2000 以降のデバイス ID が netadapter2 の場合、NetAdapters セクションのエントリは params.netadapter2 です。 AnswerFile の最上位セクションとパラメーター セクションは、ネットワーク移行 DLL に表示されません。
NetSetup によって、コンポーネントのパラメーター セクション名に、拡張機能 OemSection が追加され、コンポーネントの OEM セクション 名が作成されます。 たとえば、コンポーネントのパラメーター セクションが params.netadapter2 の場合、コンポーネントの OEM セクション 名は params.netadapter2.OemSection です。 NetSetup は、OEM セクション名を szSectionName パラメーターとして、コンポーネントのネットワーク移行 DLL によって提供される DoPreUpgradeProcessing 関数に渡します。 DoPreUpgradeProcessing 関数は、NetUpgradeAddSection 関数を呼び出し、AnswerFile 内のコンポーネントの OEM セクションを作成します。 DoPreUpgradeProcessing 関数は、NetUpgradeAddLineToSection を呼び出して、コンポーネント固有の情報を OEM セクションに入れます。
次の部分は、AnswerFile のWindows 2000 以降のデバイス ID が adapter2 であるネットワーク アダプターのセクションとエントリを示しています。
[NetAdapter] ;top-level adapters section
adapter2=params.adapter2 ;entry for adapter2
[params.adapter2] ;parameters section for adapter2
InfID=adapter2 ;Windows 2000 or later device ID
OemSection=params.adapter2.OemSection ;Identifies the OemSection
[params.adapter2.OemSection] ;OemSection created by migration DLL
InfToRunAfterInstall="", adapter2.SectionToRun ;Written by DLL
[adapter2.SectionToRun] ;Section created by migration DLL
AddReg=adapter2.SectionToRun.AddReg ;AddReg directive
[adapter2.SectionToRun.AddReg] ;AddReg section created by DLL
HKR,0\0,IsdnPhoneNumber,0,"111-1111" ;AddReg entries written by DLL
HKR,0\1,IsdnPhoneNumber,0,"222-2222"
HKR,0\0,IsdnSpid,0,"111"
HKR,0\1,IsdnSpid,0,"222"
HKR,0,IsdnSwitchType,0x00010001,1
NetSetup は、GUI モード フェーズ中に、、例の AnswerFile の params.adapter2.OemSection に移行 DLL によって書き込まれた InfToRunAfterInstall キーを検出します。 このキーの指示にしたがって、NetSetup はアダプター 2 SectionToRun.AddReg セクションを処理します。 adapter2.SectionToRun.AddReg セクションは、NetSetupに指示してWindows 2000 以降のレジストリの adazater2 のインスタンス キーにパラメーター値を追加します。 これらのパラメーター値は、アップグレードの Winnt32 フェーズ中に移行 DLL がアダプター 2 のレジストリから読み取るアップグレード前のパラメーター値と一致しなければなりません。
GUI モード フェーズ中にネットワーク移行 DLL を読み込む場合、その DoPreUpgradeProcessing 関数は NUA_LOAD_POST_UPGRADE フラグを 設定します。 このフラグにより、NetSetup は、AnswerFile の コンポーネントのパラメーター セクションに OemDllToLoad エントリを書き込みます。 OemDllToLoad エントリによって、NetSetup は GUI モード フェーズ中にコンポーネントの移行 DLL を読み込みます。
GUI モード フェーズ中にネットワーク移行 DLL が読み込まれるコンポーネントの AnswerFile セクションとエントリを示している例は次の通りです。
[NetAdapter] ;top-level adapters section
adapter2=params.adapter2 ;entry for adapter2
[params.adapter2] ;parameters section for adapter2
InfID=adapter2 ;postupgrade device ID
OemSection=params.adapter2.OemSection;Identifies the OemSection
OemDllToLoad=c:\temp\oem0001\migration.dll
params.adapter2 セクションのOemDllToLoad エントリに注意してください。 また、移行 DLL で params.adapter2.OemSection が作成されなかったことにご注意ください。 GUI モード フェーズ中に移行 DLL を読み込む場合、InfToRunAfterInstall キーは AnswerFile に通常は書き込まれません。 DLL はインストール後のアップグレードを実行します。そのため、GUI モード フェーズ中に実行する NetSetup のディレクティブなどの Oem セクション名を作成する必要はありません。