ゲーム開発者向けの DirectX インストール

この記事では、DirectX ランタイムと DirectSetup を使用して DirectX をインストールする方法に関する一般的な質問に対処することを目的としています。

重要

従来の DirectX SDK は終了しましたが、古いゲーム、チュートリアル、プロジェクトをサポートするために引き続き使用できます。 新しいプロジェクトでは使用しないでください。 レガシ DirectX SDK を使用するには、D3DX9、D3DX10、D3DX11、XAudio 2.7、XInput 1.3、XACT などのコンポーネントに非推奨の DirectSetup を使用する必要があります。 DirectX SDK の現在の状態の詳細については、「 DirectX SDK はどこにありますか?」およびブログ記事 「Not So Direct Setup」を参照してください。

DirectX ランタイム

DirectX ランタイムは、コア コンポーネントとオプション コンポーネントで構成されます。

Direct3D や DirectInput などのコア コンポーネントは、オペレーティング システムの一部と見なされます。 DirectX 9.0c のコア コンポーネントは、DirectX SDK Summer 2004 Update 以降は変更されておらず、Microsoft Windows XP SP2、Windows XP Pro x64 Edition、Windows Server 2003 SP1 でリリースされたものと一致します。 Windows Vista には、Windows ディスプレイ ドライバー モデル (WDDM) と Direct3D 10.x をサポートする DirectX 10 が含まれています。 Windows 7 および Windows Vista では DirectX 11 がサポートされています。Direct3D 11、Direct2D、DirectWrite、WARP10 ソフトウェア レンダリング デバイス、10level9 機能レベルがサポートされています。 詳細については、「 Windows のグラフィックス API」を 参照してください。

オプションのコンポーネントは DirectX SDK の更新プログラムでリリースされ、D3DX、XACT、XAudio2、XINPUT、Managed DirectX、およびその他のコンポーネントが含まれます。 オプション コンポーネントの多くは、顧客からのフィードバックを統合し、新機能を公開するために定期的に更新されます。

DirectX バージョン番号

DirectX バージョン番号 (9.0c など) は、Direct3D、DirectInput、DirectSound などのコア コンポーネントのバージョンのみを参照します。 この数は、D3DX、XACT、XINPUT など、DirectX SDK でリリースされるさまざまなオプション コンポーネントのバージョンには対応していません。

一般に、DirectX バージョン番号は、コア ランタイム ビットへのクイック リファレンスとしてを除いて意味がありません。 適切な DirectX ランタイムが既にインストールされている場合は、この番号を使用してチェックしないでください。これは、オプションの DirectX コンポーネントを考慮していないためです。

DirectX ライブラリ

以前は、D3DX を含む DirectX SDK のオプション コンポーネントが静的ライブラリとしてリリースされていました。 ただし、セキュリティプラクティスの向上に対する需要が高まるため、これらは動的に似たライブラリ (DLL) としてリリースされるようになりました。 DLL を使用すると、以前にリリースされたコードのサービスを使用できます。 これらのコンポーネントが静的ライブラリとして展開されている場合、リリース後に見つかったセキュリティの問題に Microsoft が対処する方法はありません。

機能がオプション コンポーネントに追加または変更されると、対応する DLL の名前も変更され、リリースされたコンポーネントを使用している既存のゲームに対して回帰が発生しないようにします。 各コンポーネントの DLL は並べて表示され、ゲーム開発者は、対応するインポート ライブラリにリンクすることで、ゲームで使用する DLL バージョンを正確に選択できます。

DLL をシステムにインストールすることは、単に静的ライブラリにリンクするほど簡単ではありませんが、DLL モデルの問題点に対処するために DirectX SDK にいくつかの変更が加えられます。

  • DirectX 再頒布可能パッケージは、配布とメディア サイズを最小限に抑えるためにアプリケーションで必要なコンポーネントのみを含むよう構成できます。
  • 再頒布可能フォルダー Program Files\DirectX SDK\Redist\には、可能なすべてのオプション コンポーネントのキャビネット (.cab) ファイルが含まれるようになったため、古い SDK を調べなくても見つけることができます。
  • SDK 自体をインストールすると、可能なすべてのオプション コンポーネントがインストールされます。
  • すべてのオプション コンポーネントを含む DirectX 再頒布可能パッケージは、Web ベースのインストーラーとダウンロード可能なパッケージの両方として使用できます。詳細については、DirectX デベロッパー センター (DirectX) を参照してください。

ゲームのインストーラーによる DirectX のインストール

ゲームのインストーラーに DirectX のインストールを追加するためのベスト プラクティスを次に示します。

項目 説明
再頒布可能コンポーネントを毎回インストールします。
ゲームのインストール プロセスでは、ユーザーがオプトアウトできないように、1 回のインストールのたびに DirectX 再頒布可能コンポーネントをインストールする必要があります。 オプトアウトを許可すると、一部のユーザーは必要ないと推測し、実際に行うとゲームは実行されません。
DirectX インストーラーでオプション のコンポーネントをチェックします。
Windows Update と Service Pack には DirectX のオプション コンポーネントが提供されないため、最新のオプション コンポーネントが既にシステムにインストールされていると想定しないでください。 DirectX ランタイムは、dxsetup.exe直接実行するか、DirectSetup を呼び出してインストールする必要があります。
サイレントモードで設定します。
ユーザーが誤って DirectX ランタイムの更新をスキップしないように、サイレント モードでセットアップを起動します。 これを行うには、次のコマンドを使用してdxsetup.exeを起動します。
   path-to-redistributable\dxsetup.exe /silent
または DirectSetup を呼び出して UI を表示しません。
EULA の同意を組み合わせます。
ユーザーに EULA への同意を求めるメッセージを表示する場合は、それをサイレント モードでインストールするときに DirectX EULA への同意を求めるメッセージとを組み合わせて、EULA の受け入れを求めるメッセージが 1 回だけ発生するようにします。 何かをインストールする前にプロンプトが表示され、ユーザーが受け入れられない場合は、最終的に失敗して部分的なインストールが発生しないようにする必要があります。
dxsetup を実行するか、DirectSetup を呼び出します。
DirectX のバージョン番号は、コア DirectX コンポーネントを除く何も参照しないため、dxsetup.exeを実行したり DirectSetup を呼び出したりする前に、インストールされているバージョンをチェックしないでください。 また、オプションコンポーネントが既にインストールされているかどうかをテストするためにファイルの存在をチェックしないでください。これは通常、コンポーネントが存在するタイミングを正しく判断せず、更新する必要があるためです。 ただし、DirectX セットアップ パッケージでは、これを迅速に決定し、適切なアクションを実行します。

小規模なインストール パッケージ

DirectX 用の小規模なインストール パッケージを作成するには、DirectX 再頒布可能フォルダーの内容をインストーラーの動作に必要な最小限のファイル セットまで削除し、ゲームで使用する追加コンポーネントを保持します。

最小仕様によっては、インストール メディアの再頒布可能フォルダーにコア DirectX 9.0c キャビネット ファイルを含める必要がない場合もあります。 Windows XP インストールの大部分には Service Pack 2 があり、DirectX 9.0c のコア コンポーネントが含まれているため、DirectX セットアップ操作は非常に高速になり、再起動は必要ありません。 作成できる最小パッケージは約 3 MB で、そのサイズの約半分に圧縮できます。 このようなパッケージには D3DX DLL の 1 つのバージョンが含まれており、DirectX 9.0c が既に存在している必要があります。

再頒布可能パッケージのビルドに必要な最小限のファイル セットは、DirectX SDK Redist フォルダー (Program Files\DirectX SDK\Redist) にある次のファイルです。

  • dxsetup.exe
  • dsetup32.dll
  • dsetup.dll
  • dxupdate.cab

これらのキャビネット ファイルに、インストールするコンポーネントを追加します。 アプリケーションのユーザーが既に DirectX 9.0c を持っている必要がある場合は、DirectX.cabやdxnt.cabを含める必要はありません。これは、ほとんどの領域要件を構成します。 DirectX.cabは、Windows 98 と Windows ME にのみ必要です。dxnt.cabは、Windows 2000、Windows XP、Windows XP SP1 でのみ必要です。dxdllreg_x86.cabは、Windows 2000、Windows XP RTM、Windows XP SP1、Windows Server 2003 RTM にのみ必要です。 また、DirectShow を使用しない場合、または既にインストールされていることを前提とする場合は、BDA.cab、BDANT.cab、およびBDAXP.cabを省略できます。

Note

アプリケーションのユーザーが以前のバージョンのアプリケーションによってインストールされている場合は、既に DirectX 9.0c を持っていると仮定するか、ユーザーに Web インストーラーを使用して手動で更新するように強制するか、Windows XP SP2 以降があることを前提とします。

この例を続けると、2006 年 4 月に 32 ビット バージョンの D3DX のみを使用している場合は、Apr2006_d3dx9_30_x86.cabを追加できます。 2006 年 8 月の 32 ビットバージョンの XINPUT を使用している場合は、Aug2006_xinput_x86.cabを追加します。

ネイティブの 64 ビット アプリケーションがある場合は、_x64バージョンを追加する必要があります。 ただし、64 ビット OS で実行されている 32 ビット アプリケーションがある場合は、32 ビット バージョンの DLL が機能します。

その後、ファイルのこのパッケージを配布し、サイレント モードで DirectSetup を起動するか、サイレント モードでコマンド シェルでdxsetup.exeを実行できます。 ファイルのバージョン チェックによってこのパッケージを保護し、ユーザーが DirectX セットアップの実行をオプトアウトできないようにすることを忘れないでください。 これらのイベントのいずれかが、フォール可能なインストール プロセスを作成します。

デバッグ DirectX ランタイムの内部展開

DirectX SDK がインストールされると、DirectX コンポーネントのデバッグ ランタイムがインストールされますが、すべてのテスト コンピューターに SDK をインストールすると、手間が伴う場合があります。 デバッグ ランタイム DLL を Program Files\Microsoft DirectX SDK\Developer Runtime\architecture\ から Windows\system32\ またはゲームのフォルダーにコピーするようにセットアップ プロセスを設計する必要があります。

ただし、リリースされたランタイム DLL は、最終的な製品の削除を忘れやすいため、単にコピーしないことを強くお勧めします。 代わりに、DirectX セットアップ ファイルを共有フォルダーに配置し、共有フォルダーからセットアップをサイレントモードで実行します。

デスクトップ ブリッジ アプリケーション

D3DX9、D3DX10、D3DX11、XAudio 2.7、XInput 1.3、または XACT を使用するアプリケーションデスクトップ ブリッジ、これらのレガシ DirectX SDK をサイド バイ サイド コンポーネントに展開するには、Microsoft.DirectX.x86 または Microsoft.DirectX.x64 フレームワークのいずれかをダウンロードする必要があります。 または、このような依存関係をすべて削除することもできます (XAudio 2.9 の再頒布可能バージョンの開発者ガイド、およびブログ記事「Living without D3DX and XINPUT and Windows 8」を参照してください)。