DirectSetup での DirectX のインストール
DirectX に依存するアプリケーションおよびゲームでは、DirectXSetup 関数を使用して、既にインストールされている Windows システムに必要なシステム コンポーネントをインストールできます。
- インストールされている DirectX のバージョンの確認
- 標準インストール
- カスタム インストール
- DirectX SDK の削除
- 自動再生の有効化
- DirectX の再配布
- 命名規則
- DirectX の再配布のサイズ縮小
- 以前にリリースされたオプションの SDK コンポーネントの依存関係
インストールされている DirectX のバージョンの確認
インストールする前に既存の DirectX のバージョンを確認するための、いくつかの方法を次に示します。
- DirectX 診断ツール を実行する
- アプリケーションから DirectXSetupGetVersion を呼び出す
構築する D3DX ヘッダーと、リンクしている D3DX ライブラリーとが一致していることを確認するには、D3DXCheckVersion を使用します。
標準インストール
DXSetup.exe は、DirectX SDK に付属している標準のインストーラーです。これを使用すると、開発者は、カスタム インストーラーを記述することなく簡単に DirectX ランタイムをインストールできます。標準インストーラーは、次のフォルダーに含まれています。
SDK ルート\Redist
インストーラーでは、バージョン チェック、インストールの種類の設定、使用許諾契約書 (EULA) の表示、DirectX のインストール、進行状況の報告、およびメッセージの処理に、DirectSetup API が使用されます。インストーラーによって、クリックスルーの EULA、進行状況のメーター、メッセージ処理など、インストールの間のすべてのユーザー インターフェイス (UI) コンポーネントが表示されます。
標準インストールは次のように簡単に実行できます。
- アプリケーションにマネージ コードが必要な場合は、Microsoft .NET Framework がインストールされていることを確認します。それ以外の場合は、スキップして次の手順に進みます。
- コマンド ラインから DXSetup.exe を呼び出します。
インストーラーでは、Microsoft Windows 2000 以降のリリースがサポートされています。また、インストーラーでは、次の表に記載されている言語がサポートされています。
簡体字中国語 | 繁体字中国語 | チェコ語 |
オランダ語 | 英語 (米国) | フランス語 |
ドイツ語 | イタリア語 | 日本語 |
韓国語 | ポーランド語 | ポルトガル語 (ブラジル) |
ロシア語 | スペイン語 | スウェーデン語 |
注 EULA は、複数言語の使用がサポートされているコンピューターでは英語で表示されます。
標準インストールでは、/silent という 1 つのコマンド ライン オプションがサポートされています。これを使用すると、インタラクティブでないインストールを指定できます。
カスタム インストール
DirectSetup を使用すると、DirectX コンポーネントを 1 回の呼び出しで簡単にインストールできます。「DirectSetup のリファレンス」には、複数の API 関数および構造体と、インストール処理の際にユーザー インターフェイスをカスタマイズするためのコールバック関数が含まれています。DirectX SDK には、このコールバック関数の使用方法を示すサンプル アプリケーションが含まれています (「Dinstall のサンプル」を参照してください)。次のフォルダー内の使用許諾契約書に含まれている、再頒布可能コードに関する指示に従ってください。
SDK ルート\Documentation\License Agreements
DirectXSetup 関数には、インストールのルート ディレクトリを示すパラメーター (lpszRootPath) を指定できます。ルート パスとして現在のディレクトリを指定するには、これを NULL にします。
ルート ディレクトリには、DXupdate.cab、DXDllreg_x86.cab、Dsetup.dll、Dsetup32.dll、およびオプションの DirectX SDK 再頒布可能ファイルが含まれている必要があります。アプリケーションのセットアップ ディスク上に正しい構造を作成するには、再頒布可能コードを次の場所からセットアップ プログラムのルート パスへコピーします。
- SDK がインストールされている場合、そのインストール場所は SDK ルート\Redist となります。
- DirectX CD 上の場所は、CD ルート\Redist となります。
- SDK をダウンロードした場合、その場所は展開先の場所\Redist となります。
- 最新の再頒布可能パッケージは、https://msdn2.microsoft.com/en-us/directx/default.aspxsdk からダウンロードできます。
DirectSetup を使用すると、DirectX のセットアップ処理をカスタマイズするためのコールバック関数を定義できます。このコールバック関数は DirectXSetupCallbackFunction と呼ばれますが、任意の名前を付けることができます。
このコールバック関数を使用すると、次の操作を行うことができます。
- カスタム インターフェイスを使用します。セットアップ プログラムにおいて、メッセージ ボックスや標準のダイアログ ボックスを使用する以外の方法でメッセージを表示できます。このコールバック関数によって、インストールの DirectX コンポーネント用のメッセージを独自のインターフェイスに統合できます。
- 進行状況のインジケーターを更新します。
- ステータス メッセージとエラー メッセージを非表示にします。初心者用プログラムの設計者が、エラー メッセージを非表示にして、セットアップ プログラムで通知なしでエラー処理およびアップグレード選択を実行できるようになります。この手法では、セットアップ プログラムの開発に非常に手間がかかりますが、対象となる利用者に適したプログラムを開発できます。
セットアップ プログラムによってコールバック関数が提供されない場合は、DirectXSetup 関数で、ダイアログ ボックスにステータス情報とエラー情報を表示して、MessageBox 関数を呼び出すことによってユーザー入力を取得します。コールバックが提供される場合は、ステータス ダイアログやメッセージ ボックスの作成に使用された情報が、代わりにコールバックに渡されます。コールバック 関数は、インストールまたはアップグレード可能な DirectX コンポーネントごとに 1 回呼び出されます。
次のように宣言して、DirectXSetupCallbackFunction プロトタイプと一致するコールバック関数を作成します。
DWORD WINAPI DirectXSetupCallbackFunction(
DWORD dwReason,
DWORD dwMsgType,
LPSTR szMessage,
LPSTR szName,
void *pInfo);
Dinstall のサンプル では、関数の名前はプロトタイプと同じですが、これは任意となります。コールバック関数でのパラメーターの解釈方法には、任意の方法を使用できます。一般的には、dwReason に基づいて表示するメッセージ、およびユーザーに選択肢を表示するタイミングを選択し、それに応じてインターフェイスを変更します。
コールバック関数は次のような戻り値を返す必要があります。
- ユーザーによって作成される選択肢がない場合は、IDOK
- エラーが発生した場合は、MB_OK または MB_OK | MB_ICONERROR
DirectXSetup を呼び出す前に、DirectXSetupCallbackFunction を呼び出してポインターをコールバックに渡すことによって、コールバックを使用することを DirectSetup に通知します。
DirectX SDK の削除
DirectX SDK を削除するには、[コントロール パネル](Control Panel) の [プログラムの追加と削除](Add/Remove Programs) を使用します。
自動再生の有効化
自動再生コンパクト ディスク タイトルを構築している場合は、SDK コンパクト ディスクのルート ディレクトリ内の Autorun.inf ファイルをアプリケーション ディレクトリのルートにコピーします。このテキスト ファイルには、次の情報が含まれています。
[autorun]
OPEN=SETUP.EXE
アプリケーションのセットアップ プログラムの名前が Setup.exe である場合は、このファイルに変更を加える必要はありません。それ以外の名前の場合は、そのセットアップ プログラムの名前を含めるように、このファイルを編集します。
DirectX の再配布
スタンドアロンの開発者用ランタイム インストーラーでは、DirectX 開発ツールのインストール、および再配布目的でのランタイムのデバッグのみが行われます。これらのインストーラーは、サポートされているすべてのプラットフォームで使用できます。また、次のフォルダーに配置されています。
SDK ルート\Developer Runtime\
アプリケーションでは、提供される標準インストーラーである DXSetup.exe を使用して、DirectX を再配布できます。次のフォルダー内の使用許諾契約書に記載されている、再頒布可能コードに関する指示に必ず従ってください。
SDK ルート\Documentation\License Agreements
これらのファイルは、次のフォルダーにある DirectX Redist.txt ファイルで説明されているように、DirectX のすべての配布に含まれている必要があります。
CD ルート\Documentation\License Agreements
注 このリリースに含まれる D3DX ライブラリは、この SDK に付属の Direct3D ランタイムによって決まります。また、このリリースの D3DX バージョンに対するアプリケーション リンクもこの SDK からランタイムを再配布する必要があります。
命名規則
次の命名規則は、DirectX の redist フォルダーに含まれているオプションの再頒布可能コンポーネントに対して使用されます。
D3DX
D3DX ファイルの場合は、命名規則は MonthYear_Component_HeaderVersion_Platform.ファイル拡張子 となります。
たとえば、D3DX コンポーネントを December 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。
Dec2005_d3dx9_28_x86.cab
Dec2005_d3dx9_28_x64.cab
注 October 2005 SDK リリースの D3DX コンポーネントとの違いはありません。
D3DX コンポーネントを August 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。
Aug2005_d3dx9_27_x86.cab
Aug2005_d3dx9_27_x64.cab
D3DX コンポーネントを June 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。
Jun2005_d3dx9_26_x86.cab
Jun2005_d3dx9_26_x64.cab
D3DX コンポーネントを April 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。
Apr2005_d3dx9_25_x86.cab
Apr2005_d3dx9_25_x64.cab
D3DX コンポーネントを Feb 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。
Feb2005_d3dx9_24_x86.cab
Feb2005_d3dx9_24_x64.cab
今後の SDK リリースでも、この命名規則に従います。
マネージ コード用 DirectX
マネージ コード用 DirectXの場合は、ファイルの命名規則は MonthYear_Component_Platform.ファイル拡張子 となります。
MonthYear_Component_Platform.Ext
注 マネージ コンポーネントは、December リリースから始まり、MDX1 という名前が付けられます。
したがって、マネージ コード コンポーネントを December 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。
Dec2005_MDX1_x86.cab
以前のマネージ コード コンポーネントは、December リリースから始まり、その名前に Archive を含む .cab ファイルに含まれます。以前の MDX コンポーネントをサポートするには、以前のリリースの .cab ファイルの代わりに次の .cab ファイルを使用します。
Dec2005_MDX1_x86_Archive.cab
XInput
XInput ファイルの場合は、命名規則は MonthYear_Component_Platforms.ファイル拡張子 となります。
したがって、XInput コンポーネントを December 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。
Oct2005_xinput_x86.cab
Oct2005_xinput_x64.cab
注 December 2005 SDK リリースの XInput への動作変更点はありません。
DirectX の再配布のサイズ縮小
DirectX の再頒布可能パッケージの既定のファイル セットには、すべての DirectX アプリケーションをサポートするために必要な、すべてのファイルが含まれています。開発には、DirectX の Redist フォルダー内のすべてのファイルを使用することを強くお勧めします。DirectX の再頒布可能パッケージのフットプリントのサイズを小さくするには、オプションの DirectX SDK 再頒布可能ファイルを削除します。これらのファイルは、CD ルート\Documentation\License Agreements\DirectX Redist.txt に記載されています。
例として、一般的ないくつかのシナリオを次に示します。
- BDA のサポートなし (3 MB 節約)
アプリケーションでブロードキャスト ドライバー アーキテクチャー (BDA) をサポートする必要がない場合は、BDA.CAB、BDANT.CAB、および BDAXP.CAB を削除できます。 - Managed DirectX なし (約 5 MB 節約)
アプリケーションで Managed DirectX が必要ない場合は、MonthYear_MDX1_x86.cab ファイルと MonthYear_MDX1_x86_Archive.cab ファイルを redist フォルダーから削除できます。 - D3DX のサポート (約 17 MB 節約)
アプリケーションで D3DX 9 が必要ないか、特定の月のリリースのみが必要な場合は、古い MonthYear_d3dx9_HeaderVersion_x86.cab ファイルと MonthYear_d3dx9_HeaderVersion_x64.cab ファイルを redist フォルダーから削除できます。 - 64 ビットのサポートなし (約 10 MB 節約)
アプリケーションがネイティブの 64 ビット (x64) アプリケーションではない場合は、*_x64.cab ファイルを redist フォルダーから削除できます。 - DirectX 9.0c がインストール済み
アプリケーションで DirectX 9.0c 以降が必要な場合は、DirectX.cab と DXnt.cab を redist フォルダーから削除できます。ただし、これらの cab を redist フォルダーから削除し、DirectX 9.0c 以降がインストールされていない場合は、DirectXSetup は失敗します。 - XInput のサポートなし (1 MB 未満の節約)
アプリケーションで XInput API が必要ない場合は、MonthYear_xinput_x86.cab ファイルと MonthYear_xinput_x64.cab ファイルを redist フォルダーから削除できます。 - XACT のサポートなし (約 1 MB 節約)
アプリケーションで XACT API が必要ない場合は、MonthYear_xact_86.cab ファイルと MonthYear_xact_x64.cab ファイルを Redist フォルダーから削除できます。
たとえば、顧客の環境に DirectX 9.0c がインストールされていることが分かっており、December 2005 SDK リリースの D3DX ライブラリの 32 ビット バージョンのみが含まれた最小限の再頒布可能パッケージが必要だとします。このシナリオの場合は、redist フォルダーに次の CAB ファイルを含める必要があります。
- dxsetup.exe
- dsetup32.dll
- dsetup.dll
- dxupdate.cab
- dxdllreg_x86.cab
- Dec2005_d3dx9_28_x86.cab
インストールの際には、DirectXSetup API を使用するか、DXSetup.exe を実行して D3DX コンポーネントをインストールできます。
以前にリリースされたオプションの SDK コンポーネントの依存関係
既定では、DirectX 再頒布可能パッケージには、以前のバージョンの SDK 再頒布可能コンポーネントが含まれています。
開発者が行う必要があるのは、既定の DirectX 再頒布可能パッケージを含めることだけです。既定の DirectX 再頒布可能パッケージには、以前にリリースされたすべての SDK 再頒布可能コンポーネント パッケージ (.cab ファイル) が含まれています。開発者がその他の変更を加える必要はありません。
DirectX Setup によって、コンポーネントの .cab パッケージが使用可能であることが検出され、DLL のファイル バージョン チェックを介して、コンポーネントのファイルが適切にインストールされます。これらのファイルは、より新しいバージョンがある場合のみインストールされます。たとえば、アプリケーションのコンポーネントに SDK の August 2005 リリースのオプションのコンポーネントが必要な場合は、適切な .cab ファイルを、August 2005 リリースの redist フォルダーから現在の redist フォルダーへコピーする必要があります。
D3DX を使用するアプリケーションには、次のファイルが必要となります。
Aug2005_d3dx9_27_x86.CAB
Aug2005_d3dx9_27_x64.CAB
また、D3DX 9 シェーダー関数を D3DXSHADER_USE_LEGACY_D3DX9_31_DLL フラグを使用して呼び出すことによってシェーダーをコンパイルするアプリケーションは、October 2006 バージョンの D3DX 9 に依存しているため、次のファイルが必要となります。
OCT2006_d3dx9_31_x86.cab
OCT2006_d3dx9_31_x64.cab (for 64-bit native applications)
Managed DirectX アプリケーションには、次のファイルが必要となります。
Dec2005_MDX1_x86_Archive.cab
Aug2005_d3dx9_27_x86.CAB
Aug2005_d3dx9_27_x64.CAB