トレーニング
ラーニング パス
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
この記事では、必要に応じて Direct3D 11 コンポーネントをシステムに展開する方法について説明します。
Direct3D 11 API は、マルチスレッド レンダリングとリソース作成、コンピューティング シェーダー、ハードウェア テセレーション、BC6H/BC7 テクスチャ圧縮、HLSL シェーダー モデル 5.0 と動的シェーダー リンケージをサポートする既存の Direct3D 10.1 API を拡張します。 Direct3D 11 コンポーネントに加えて、DirectX 11 ランタイムには、Direct3D 11、DXGI 1.1、10level9 機能レベル、WARP10 ソフトウェア レンダリング デバイス、Direct2D、DirectWrite、および 10level9 および WARP10 をサポートする更新された Direct3D 10.1 という追加のグラフィックス コンポーネントが含まれています。 これらおよびその他の Windows グラフィックス コンポーネントの詳細については、「 Windows のグラフィックス API」を参照してください。
これらの新しいグラフィックス コンポーネントはすべて、Windows 7 および Windows Server 2008 R2 オペレーティング システムに組み込まれています。 Direct3D 11 API および関連コンポーネントは、Windows Updateからのシステム更新プログラムを使用して Windows Vista にインストールすることもできます。 この更新プログラムには、Windows Vista と Service Pack 2 が必要です。 自動更新が有効になっているエンド ユーザーは、すべての Windows 7 ユーザーと同様に、Direct3D 11 コンポーネントが既にインストールされている可能性があります。
D3D11InstallHelper サンプルは、Direct3D 11 API の検出を簡略化し、エンド ユーザーのコンピューターに該当する場合はシステム更新プログラムを自動的にインストールし、新しい Service Pack が必要な場合は手動でエンド ユーザーに適切なメッセージを提供するように設計されています。
注意
HLSL コンパイラ (D3DCompile*.dll) と Direct3D 11 (D3DX11*.dll) 用の D3DX ユーティリティ ライブラリは、Windows オペレーティング システムのどのバージョンにも組み込まれていませんが、既存の DirectSetup テクノロジを使用してアプリケーションのインストーラーの一部として展開できます。DirectSetup の使用方法の詳細については、「 ゲーム開発者向けの DirectX インストール」を参照してください。 "Effects 11" は、 Direct3D 11 Update の Effects で共有ソース サポート ライブラリとして使用でき、アプリ (DXUT ユーティリティ ライブラリと同様) に直接含めることができます。 したがって、ランタイム再配布の追加要件はありません。
Windows 10には、Direct3D 11.3 API が組み込まれています。 Direct3D 11.3 API の新機能の一覧については、「Direct3D 11.3 の機能」を参照してください。
Windows 8.1とWindows Server 2012 R2 には、Direct3D 11.2 API が組み込まれています。 Direct3D 11.2 API の新機能の一覧については、「Direct3D 11.2 の機能」を参照してください。
Windows 8とWindows Server 2012には、Direct3D 11.1 API が組み込まれています。 Direct3D 11.1 API の部分的なサポートは、Windows 7 用プラットフォーム更新プログラム がインストールされた Windows 7 または Windows Server 2008 R2 で利用できます。 Windows 7 のプラットフォーム更新プログラムの詳細については、「Windows 7 用プラットフォーム更新プログラム」を参照してください。
D3D11InstallHelper.dllは、Direct3D 11 コンポーネントを検出し、必要に応じてWindows Update サービスを介してシステム更新を実行するためのコア機能をホストします。 DLL には、メッセージやダイアログ ボックスは直接表示されません。
DLL は、次のエントリ ポイントで構成されます。
CheckDirect3D11Status
この関数は、必要なチェックを実行し、このコンピューターの Direct3D 11 の状態を返します。 この関数には管理者権限は必要ありません。
DoUpdateForDirect3D11
この関数は、Windows Update API を使用して、このシステムに Direct3D 11 をインストールするためのシステム更新プログラムを実行します (該当する場合)。 この関数では、Windows Updateを成功させるためにネットワーク接続と管理者権限が必要であることに注意してください。 省略可能な進行状況コールバック関数とユーザー コンテキスト ポインターを受け取り、完了すると最終的な結果コードを返します。
Windows Update API の詳細については、「Windows Update エージェント API」を参照してください。
注意
D3D11Install.exeを実行するにはD3D11InstallHelper.dllが必要です。
D3D11Install.exeは、D3D11InstallHelper.dllを UI メッセージとエンド ユーザー メッセージを含むスタンドアロン インストーラーとして使用し、DLL を適切に使用するための例として機能するためのツールです。 Direct3D 11 が既にインストールされている場合、システム更新プログラムがシステムの再起動を必要とせずに正常に適用された場合、Service Pack のインストールが必要な場合、または Direct3D 11 がこのコンピューターでサポートされていない場合、プロセスは 0 で終了します。 システム更新が正常に適用され、システムの再起動が完了する必要がある場合は、1 が返されます。 他のエラー条件に対して 2 が返されます。 この実行可能ファイルを実行するには管理者権限が必要であり、UAC が有効になっている Windows Vista または Windows 7 で実行するときに昇格を要求するマニフェストがあることに注意してください。 D3D11Install.exeは、Direct3D 11 更新プログラムを展開するためのスタンドアロン ツールとして使用することも、インストーラーによって直接使用することもできます。
次のコマンド ライン スイッチがサポートされています。
/静か
メッセージ、プロンプト、進行状況ダイアログ ボックス、またはエラー メッセージを表示しません。
/パッシブ
メッセージ、プロンプト、またはエラー メッセージは表示されませんが、進行状況ダイアログ ボックスが表示されます。
/最小限
最小限のプロンプトのみを表示します。
/Y
必要に応じて、標準インストールと最小インストールの更新プログラムのインストールを確認するように求めるメッセージが表示されないようにします。
/langid decimal
エンド ユーザー メッセージとダイアログ ボックス リソースを表示するときに使用する言語識別子コードを強制します。 既定値は 1024 で、システムの既定の言語設定が使用されます。
/呉
マネージド サーバーまたはその他の標準以外の構成で実行されているWindows Server Update Services (WSUS) である可能性がある、システムの既定値ではなく、Windows Updateを強制的に使用します。
Windows 版ゲームのサポートの簡単なインストール、 技術的要件 3.1 に準拠するには、インストール プロセスの早い段階でエンド ユーザープロンプトが表示されるように注意し、UAC 関連の昇格プロンプトが複数ないように注意する必要があります。 この目標を達成するには、次の 3 つの基本的な選択肢があります。
InstallShield の InstallScript からの Direct3D 11 展開の処理は、D3D11InstallHelper サンプルを使用して簡単に行うことができます。 InstallScript を使用して InstallShield と統合するために必要な手順は次のとおりです (前のセクションで説明した方法 3 を使用)。
InstallShield エディターで InstallScript プロジェクトを開きます。
D3D11InstallHelper.dllとD3D11Install.exeを サポート ファイルのプロジェクトに追加します。
InstallShield プロジェクトにファイルを追加するには
InstallScript エクスプローラーで、左側のナビゲーション ウィンドウの [ 動作とロジック ] の下にある DLL または実行可能ファイルを呼び出す InstallScript ファイル (通常は Setup.rul) をクリックします。
次の InstallScript を上部付近のファイルに貼り付けます。
#define D3D11IH_STATUS_INSTALLED 0 #define D3D11IH_STATUS_NOT_SUPPORTED 1 #define D3D11IH_STATUS_REQUIRES_UPDATE 2 #define D3D11IH_STATUS_NEED_LATEST_SP 3 #define D3D11IH_STATUS_ERROR -1 プロトタイプ NUMBER D3D11InstallHelper.CheckDirect3D11StatusIS();
#define D3D11IH_RESULT_SUCCESS 0 #define D3D11IH_RESULT_SUCCESS_REBOOT 1 #define D3D11IH_RESULT_NOT_SUPPORTED 2 #define D3D11IH_RESULT_UPDATE_NOT_FOUND 3 #define D3D11IH_RESULT_UPDATE_DOWNLOAD_FAILED 4 #define D3D11IH_RESULT_UPDATE_INSTALL_FAILED 5 #define D3D11IH_RESULT_WU_SERVICE_ERROR 6 #define D3D11IH_RESULT_ERROR -1 プロトタイプ NUMBER D3D11InstallHelper.DoUpdateForDirect3D11IS(BOOL);```
OnFirstUIBefore 関数のファイルに、戻り値 0 の直前に次の InstallScript を貼り付けます。
Dlg_D3D11:
UseDLL( SUPPORTDIR ^ "D3D11InstallHelper.DLL" );
nResult = D3D11InstallHelper.CheckDirect3D11StatusIS();
UnUseDLL( SUPPORTDIR ^ "D3D11InstallHelper.DLL" );
if ( nResult = D3D11IH_STATUS_REQUIRES_UPDATE
|| nResult = D3D11IH_STATUS_NEED_LATEST_SP) then
nResult = LaunchAppAndWait(
SUPPORTDIR^"D3D11Install.exe",
"/minimal /y", WAIT);
if ( nResult < 0 ) then
MessageBox("Unable to launch D3D11Install.exe",
SEVERE);
elseif ( nResult == 1 ) then
BATCH_INSTALL = 1;
endif;
endif;
MSI カスタム アクションを使用して Direct3D 11 展開を統合するために必要な手順の概要を次に示します (このトピックで前述した方法 3 を使用)。
この手順については、次の手順で詳しく説明します。この手順では、 Orca エディターなどの MSI エディターを使用して実行できるプロセスについて説明します。 一部の MSI エディターには、これらの構成手順の一部を簡略化するウィザードがあります。
D3D11InstallHelper.dllと統合するために MSI パッケージを構成するには
Orca で MSI パッケージを開きます。
次の表に示す行を、MSI パッケージの Binary テーブルに追加します。
名前 | Data |
---|---|
D3D11IH | DLL\D3D11InstallHelper.dllへのファイル パス |
注意
このファイルは MSI パッケージに埋め込まれるので、D3D11InstallHelper.dll再コンパイルするたびにこの手順を実行する必要があります。
次の表に示す行を、MSI パッケージの CustomAction テーブルに追加します。
アクション | Type | source | 移行先 |
---|---|---|---|
Direct3D11SetProps | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 | D3D11IH | SetD3D11InstallMSIProperties |
Direct3D11DoInstall | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 3137 | D3D11IH | DoD3D11InstallUsingMSI |
Direct3D11Finish | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeContinue = 65 | D3D11IH | FinishD3D11InstallUsingMSI |
次の表の Action、Condition、Sequence に表示される値を、MSI パッケージの InstallExecuteSequence テーブルに追加します。
アクション | 条件 | シーケンス | メモ |
---|---|---|---|
Direct3D11SetProps | 1016 | シーケンス番号は、CostFinalize の直後にアクションを配置します。 | |
Direct3D11DoInstall | NOT Installed | 4004 | このカスタム アクションは、すべてのユーザーの新しいインストール中にのみ行われます。 シーケンス番号は、InstallFiles の後とロールバック後にアクションを配置します。 |
Direct3D11Finish | 6615 | シーケンス番号は、InstallFinalize の直後にアクションを配置します。 |
次の表に示す行を、MSI パッケージの Property テーブルに追加します。
プロパティ | 値 |
---|---|
RelativePathToD3D11IH | D3D11Install.exeとD3D11InstallHelper.dllを含む相対ファイル パス |
注意
パスで指定された場所は、インストール パスで指定された場所 ("redist\" など) に対する相対位置です。
MSI パッケージを保存します。 MSI パッケージと Windows インストーラーの詳細については、「 Windows インストーラー」を参照してください。
D3D11InstallHelper.dllとD3D11Install.exeの両方を Visual Studio のデバッグ構成でビルドできます。これらのバージョンでは、標準の Windows デバッグ出力メカニズムにメッセージが出力されます。
D3D11InstallHelper サンプルは、コンシューマーによるゲームのインストールに最も一般的なシナリオである、Windows Updateを使用した標準的な展開用に設計されています。 ただし、パブリッシャーや開発スタジオで作業する多くのゲーム開発者は、Windows Server Update Services (WSUS) テクノロジを使用してソフトウェア更新プログラムを提供するローカル管理サーバーを持つエンタープライズ設定で行います。 この種類の環境では、ローカルの IT 管理者は、企業ネットワーク内のコンピューターで使用できる更新プログラムを承認制御でき、標準のコンシューマー バージョンの更新プログラム KB 971644は使用できません。
企業/エンタープライズ設定で DirectX 11 を展開するための 3 つの基本的なソリューションがあります。
ゲーマーのコンピューターがローカルで管理されている WSUS サーバーからのみ更新プログラムを取得できることは非常にまれであり、このような環境にある可能性が高いのは大規模な組織の開発者のみです。
トレーニング
ラーニング パス
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization