次の方法で共有


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

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

大事な

従来の DirectX SDK は寿命を迎えていますが、古いゲーム、チュートリアル、プロジェクトをサポートするために引き続き使用できます。 新しいプロジェクトでは使用しないでください。 従来の DirectX SDK を使用するには、D3DX9、D3DX10、D3DX11、XAudio 2.7、XInput 1.3、XACT などのコンポーネントで非推奨の DirectSetup を使用する必要があります。 DirectX SDK の現在の状態の詳細については、「DirectX SDK の場所」を参照してください。、ブログ記事 直接セットアップ

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\, now contains a cabinet (.cab) ファイル。そのため、古い SDK を調べる必要はありません。
  • SDK 自体をインストールすると、可能なすべてのオプション コンポーネントがインストールされます。
  • すべてのオプション コンポーネントを含む DirectX 再頒布可能パッケージは、Web ベースのインストーラーとダウンロード可能なパッケージの両方として使用できます。詳細については、DirectX デベロッパー センター (DirectX) を参照してください。

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

手記

「ゲーム開発者向けの Direct3D 11 の展開 を参照してください。

ゲームのインストーラーに 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 への同意を求めるメッセージと組み合わせて、1 回だけ EULA の同意を求めるメッセージが表示されるようにします。 何かをインストールする前にプロンプトが表示され、ユーザーが受け入れられない場合は、最終的に失敗して部分的なインストールが行われないようにする必要があります。
dxsetup を実行するか、DirectSetup を呼び出すだけです。
DirectX のバージョン番号は、コア DirectX コンポーネント以外の何も参照しないため、dxsetup.exe を実行したり DirectSetup を呼び出したりする前に、インストールされているバージョンを確認しないでください。 また、オプションのコンポーネントが既にインストールされているかどうかをテストするファイルの存在を確認しないでください。これは通常、コンポーネントが存在するが更新が必要な時期を正しく判断しないためです。 ただし、DirectX セットアップ パッケージはこれを迅速に判断し、適切なアクションを実行します。

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

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

最小仕様によっては、インストール メディアの再頒布可能フォルダーにコア DirectX 9.0c キャビネット ファイルを含める必要がない場合もあります。 Windows XP のインストールの大部分には、コア DirectX 9.0c コンポーネントを含む Service Pack 2 があるため、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を省略できます。

手記

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

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

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

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

デバッグ DirectX ランタイムの内部配置

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

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

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

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