Share via


DirectSetup での DirectX のインストール

DirectX に依存するアプリケーションおよびゲームでは、DirectXSetup 関数を使用して、既にインストールされている Windows システムに必要なシステム コンポーネントをインストールできます。

インストールされている DirectX のバージョンの確認

インストールする前に既存の DirectX のバージョンを確認するための、いくつかの方法を次に示します。

構築する D3DX ヘッダーと、リンクする D3DX ライブラリとが一致していることを確認するには、D3DXCheckVersion を使用します。

標準インストール

DXSetup.exe は、DirectX SDK に付属している標準のインストーラーです。これを使用すると、開発者は、カスタム インストーラーを記述することなく簡単に DirectX ランタイムをインストールできます。標準インストーラーは、次のフォルダーに含まれています。

SDK ルート\Redist

インストーラーでは、バージョン チェック、インストールの種類の設定、使用許諾契約書 (EULA) の表示、DirectX のインストール、進行状況の報告、およびメッセージの処理に、DirectSetup API が使用されます。インストーラーによって、クリックスルーの EULA、進行状況のメーター、メッセージ処理など、インストールの間のすべてのユーザー インターフェイス (UI) コンポーネントが表示されます。

標準インストールは次のように簡単に実行できます。

  1. アプリケーションにマネージ コードが必要な場合は、Microsoft .NET Framework がインストールされていることを確認します。それ以外の場合は、スキップして次の手順に進みます。

  2. コマンド ラインから DXSetup.exe を呼び出します。

インストーラーでは、Microsoft Windows 2000 以降のリリースがサポートされています。また、インストーラーでは、次の表に記載されている言語がサポートされています。

簡体字中国語 繁体字中国語 チェコ語
オランダ語 英語 (米国) フランス語
ドイツ語 イタリア語 日本語
韓国語 ポーランド語 ポルトガル語 (ブラジル)
ロシア語 スペイン語 スウェーデン語

注意

EULA は、複数言語の使用がサポートされているコンピューターでは英語で表示されます。

標準インストールでは、/silent という 1 つのコマンド ライン オプションがサポートされています。これを使用すると、インタラクティブでないインストールを指定できます。

DirectX SDK をインストールしたら、Visual Studio でプロジェクトを構築する前に、次の操作を実行して Visual Studio のディレクトリを初期化する必要があります。

  1. [ツール]、[オプション]、[プロジェクトおよびソリューション]、[VC++ ディレクトリ] の順に選択します。

  2. [実行可能ファイル] を表示し、%ProgramFiles%\Microsoft DirectX SDK (March 2008)\Utilities\Bin\x86 を追加します。

  3. [インクルード ファイル] を表示し、%ProgramFiles%\Microsoft DirectX SDK (March 2008)\Include を追加します。

  4. [ライブラリ ファイル] を表示し、%ProgramFiles%\Microsoft DirectX SDK (March 2008)\Lib\x86 を追加します。

この例では、March 2008 SDK 用の操作方法を示していますので、現在の日付の SDK に置き換えてください。

カスタム インストール

DirectSetup を使用すると、DirectX コンポーネントを 1 回の呼び出しで簡単にインストールできます。「DirectSetup のリファレンス」には、複数の API 関数および構造体と、インストール処理の際にユーザー インターフェイスをカスタマイズするためのコールバック関数が含まれています。DirectX SDK には、このコールバック関数の使用方法を示すサンプル アプリケーションが含まれています (「DXInstall サンプル」を参照してください)。次のフォルダー内の使用許諾契約書に含まれている、再頒布可能コードに関する指示に従ってください。

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);

DXInstall サンプル では、関数の名前はプロトタイプと同じですが、これは任意となります。コールバック関数でのパラメーターの解釈方法には、任意の方法を使用できます。一般的には、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.cabDec2005_d3dx9_28_x64.cab

注意

October 2005 SDK リリースの D3DX コンポーネントとの違いはありません。

D3DX コンポーネントを August 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。

Aug2005_d3dx9_27_x86.cabAug2005_d3dx9_27_x64.cab

D3DX コンポーネントを June 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。

Jun2005_d3dx9_26_x86.cabJun2005_d3dx9_26_x64.cab

D3DX コンポーネントを April 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。

Apr2005_d3dx9_25_x86.cabApr2005_d3dx9_25_x64.cab

D3DX コンポーネントを Feb 2005 SDK リリースからインストールしていた場合は、次のようなファイル名を使用することになります。

Feb2005_d3dx9_24_x86.cabFeb2005_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.cabOct2005_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.cabOCT2006_d3dx9_31_x64.cab (for 64-bit native applications)

Managed DirectX アプリケーションには、次のファイルが必要となります。

Dec2005_MDX1_x86_Archive.cabAug2005_d3dx9_27_x86.CAB Aug2005_d3dx9_27_x64.CAB