![]() |
Windows セットアップは、次の 3 とおりの方法で拡張できます。
.inf ファイル内のインストール セクションを実行するには、Windows システム コマンドの Rundll.exe または Rundll32.exe を使用します。コマンド ラインの構文は、次のとおりです。
RunDll setupx.dll,InstallHinfSection <section> <reboot-mode> <inf-name>
<section> パラメータには、.inf ファイル内のインストール セクションの名前を指定します。コマンド ラインからゲーム オプション コンポーネントをインストールする例を次に示します。この例では、コンピュータの再起動が必要であれば、インストール完了後すぐにコンピュータを起動するかどうかをユーザーに確認させるメッセージが表示されます。<reboot-mode> パラメータの意味については、このトピックの「再起動モード パラメータの使用」を参照してください。
RunDll setupx.dll,InstallHinfSection games 4 applets.inf
注
次の 5 つの再起動モードがサポートされています。
define HOW_NEVER_REBOOT 0 define HOW_ALWAYS_SILENT_REBOOT 1 define HOW_ALWAYS_PROMPT_REBOOT 2 define HOW_SILENT_REBOOT 3 define HOW_PROMPT_REBOOT 4
<inf-name>で Windows の .inf ファイルではなく独自の .inf ファイルを指定する場合は、上に示した値に 128 を加算した値を指定してください。上に示したゲーム オプション コンポーネントをインストールする例では、Windows の Applets.inf ファイルを指定しているため、<reboot-mode> が 4 に設定されています。独自の .inf ファイルが関連付けられているオプション コンポーネントをインストールする場合は、<reboot-mode> を 132 に設定します。<reboot-mode> パラメータに 128 を加算した値を指定する場合は、インストールするすべてのファイルをインストール ディスク上の .inf ファイルと同じフォルダに格納しておく必要があります。
注
各再起動モードの意味を次に示します。
NeverReboot
<reboot-mode> を 0 または 128 に設定してください。このモードでは、どのような場合もコンピュータは再起動されません。コンピュータを再起動する必要があるかどうかは、クライアント側で判断する必要があります。セットアップでは、0 バイトより大きいサイズの C:¥Windows¥Wininit.ini ファイルが生成されることを意味します。
AlwaysSilentReboot
<reboot-mode> を 1 または 129 に設定してください。このモードでは、常にユーザーに対して確認を求めずにコンピュータを再起動します。
AlwaysPromptReboot
<reboot-mode> を 2 または 130 に設定してください。このモードでは、コンピュータを再起動するかどうかを確認するようにユーザーに求めます。コンピュータの再起動が必要かどうかは、セットアップ プログラム側では判断されません。
SilentReboot
<reboot-mode> を 3 または 131 に設定してください。このモードでは、セットアップ プログラム側でコンピュータの再起動が必要と判断した場合は、ユーザーに確認を求めずにコンピュータを再起動します。
PromptReboot
<reboot-mode> を 4 または 132 に設定してください。このモードでは、セットアップ プログラム側でコンピュータの再起動が必要と判断した場合は、ユーザーに確認を求めた上でコンピュータを再起動します。
Windows のセットアップ時にインストールしなかったオプション コンポーネント (ゲームなど) を後から追加する必要が生じることがあります。Windows の一回目のインストールの後に行うこのようなインストールのことを、メンテナンス モード セットアップと呼びます。通常、Windows ユーザーがメンテナンス モード セットアップを行う場合は、コントロール パネルの [プログラムの追加と削除] をクリックすることから始めます。これに対し、オプション コンポーネントを提供するベンダやサプライヤの場合は、32 ビット アプリケーションから CreateProcess を呼び出すことによって、オプション コンポーネントをインストールできます。
注
32 ビット アプリケーションからオプション コンポーネントをインストールするには、次に示す方法を適切に組み合わせてください。
まず最初にレジストリをチェックして、目的のオプション コンポーネントが既にインストールされているかどうか (コンポーネントのファイルが存在するかどうか) を確認します。インストール済みのオプション コンポーネントに関する情報は、次のレジストリ キーに格納されています。
[HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥SETUP¥OptionalComponents]
このキーの下層には複数のサブキーを示す値があり、各サブキーにはインストール済みのオプション コンポーネントに関する情報と、新しいオプション コンポーネントをインストールするために必要な情報が格納されています。ここでは、ゲーム オプション コンポーネントをインストールする場合を想定します。ゲームがインストールされているかどうかを確認するには、OptionalComponents キーの下層にある次のサブキーの値を調べます。
"Games"="Games"
OptionalComponents キーの下層にある "Games" キーを開いて、次のような設定を表示します。
[HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥SETUP¥OptionalComponents¥Games] "INF"="applets.inf" "Section"="games" "Installed"="0"
上の例では、"Installed" フラグが 0 に設定されています。これは、ゲーム オプション コンポーネントがこの Windows コンピュータにまだインストールされていないことを示しています。
ゲームなどのオプション コンポーネントをインストールするには、上に示したキーに "INF" および "Section" の値を使用して CreateProcess 関数を呼び出し、RUNDLL 経由で Setupx.dll を実行します。これにより、コントロール パネルの [プログラムの追加と削除] を使った場合と同じ結果が得られます。CreateProcess 関数の呼び出しには、lpCommandLine パラメータを次の構文で指定します。
RunDll setupx.dll,InstallHinfSection <section> <reboot-mode> <inf-name>
<section> パラメータおよび <inf-name> パラメータには、上に示したレジストリ キーの値をそれぞれ指定します。CreateProcess 関数を呼び出してゲーム オプション コンポーネントをインストールする例を次に示します。この例では、コンピュータの再起動が必要であれば、インストール完了後すぐににコンピュータを起動するかどうかをユーザーに確認させるプロンプトが表示されます。<reboot-mode> パラメータの意味については、このトピックの「再起動モード パラメータの使用」を参照してください。
RunDll setupx.dll,InstallHinfSection games 4 applets.inf
注
CreateProcess 関数から Setupx.dll に制御が渡されると、コンピュータが再起動される可能性があるため、インストール プログラムを独自に開発する場合は、CreateProcess 関数の呼び出し後にコードを実行しないようにしてください。インストール処理中に CreateProcess 関数を呼び出した後でほかのコードを実行する必要がある場合は、.inf ファイル内の RunOnce リストにそのコードを指定します。
注
セットアップでは、.inf ファイルに DefaultInstall という名前のセクションが含まれている場合には、そのセクションからオプション コンポーネントがインストールされます。独自の .inf ファイルに [DefaultInstall] セクションを記述し、.inf ファイルのファイル アイコンを 32 ビット Windows のデスクトップに配置しておくと、ユーザーはそのアイコンを右クリックして [DefaultInstall] セクションを実行できます。ユーザーが .inf ファイルのアイコンを右クリックすると、ポップアップ メニューが表示されます。実際に [DefaultInstall] セクションを実行するには、このメニューから [インストール] オプションを選択する必要があります。
独自の .inf ファイルの [DefaultInstall] という名前のインストール セクションを記述すると、オプション コンポーネントを簡単にインストールすることができます。この方法は、特にアプリケーションの開発中に役立ちます。最終的にはインストール用のアプリケーションを作成する予定の場合も、コードが完成するまでの間は、この方法でオプション コンポーネントをインストールできます。
一般的なエントリを含む [DefaultInstall] セクションの例を次に示します。
[DefaultInstall] CopyFiles=QCD.copy.prog, QCD.copy.hlp, QCD.copy.win, QCD.copy.sys, QCD.copy.inf UpdateInis=QCD.Links AddReg=QCD.reg, QCD.run Uninstall=FlexiCD_remove