> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# フレームワーク パッケージの依存関係

> フレームワーク パッケージの依存関係

Microsoft Store にフレームワーク パッケージとして利用可能な再配布可能ソフトウェアにアプリが依存している場合、再配布可能パッケージを連鎖インストールする代わりに、フレームワーク パッケージへの依存関係を宣言できます。ただし、依存する再配布可能パッケージ用のフレームワーク パッケージが Microsoft Store で利用できない場合はこれを使用しないでください。代わりに、カスタム インストール アクションを検討してください。

## 詳細

* 必要な再配布可能パッケージのエクスポート ライブラリを参照する通常の方法でアプリを開発します。

* 依存する再配布可能パッケージをアプリにバンドルする代わりに、マニフェストを更新して該当するフレームワーク パッケージへの依存関係を宣言します。

* ユーザーが Microsoft Store からアプリをインストールすると、依存関係が検出され、フレームワーク パッケージがアプリで利用できるようになります。

  フレームワーク パッケージがすでにユーザーのデバイスにインストールされている場合、追加の操作は不要です。それ以外の場合、Microsoft Store は、それを使用するアプリのインストールを進める前に、フレームワーク パッケージのインストールをトリガーします。

* アプリの x86 ビルドは、フレームワーク パッケージの x86 ビルドを使用します。アプリの x64 ビルドは、フレームワーク パッケージの x64 ビルドを使用します。アーキテクチャを指定するために何もする必要はありません。プラットフォームがそれを行います。

## DirectX ランタイム

このフレームワーク パッケージは、レガシー DirectX SDK からのさまざまなサイドバイサイドのオプション コンポーネントを提供します。アプリケーションが非推奨の Direct3D ユーティリティ ライブラリである D3DX9、D3DX10、D3DX11、XAudio 2.7、XInput 1.3、または XACT を使用している場合、このパッケージを使用して、それらの非推奨 DLL をパッケージ化された Win32 デスクトップ アプリケーションにデプロイできます。これらのコンポーネントに関する詳細な背景については、[この blog ポスト](https://aka.ms/dxsetup) を参照してください。

<Note>DirectX を使用するタイトルの大多数は、この「レガシー DirectX SDK」フレームワーク パッケージ依存関係を実際には必要としません。</Note>

```
D3DCompiler_33.dl - D3DCompiler_43.dll
d3dcsx_42.dll, d3dcsx_43.dll
d3dx10.dll, d3dx10_33.dll - d3dx10_43.dll
d3dx11_42.dll, d3dx11_43.dll
d3dx9_24.dll - D3DX9_43.dll
```

```
x3daudio1_0.dll - X3DAudio1_7.dll
xactengine2_0.dll - xactengine2_9.dll
xactengine3_0.dll - xactengine3_7.dll
XAPOFX1_0.dll - XAPOFX1_5.dll
XAudio2_0.dll - XAudio2_7.dll
```

```
xinput1_1.dll - xinput1_3.dll
```

または、アプリケーションを更新して [レガシー DirectX SDK](https://learn.microsoft.com/windows/win32/directx-sdk--august-2009-) 依存関係を削除することもできます。

* **XAudio2** の場合、最良のオプションは、Windows 10 SDK のヘッダーを使用して XAudio 2.9 にアップグレードすることです。Windows 10 では、XAudio 2.9、X3DAudio、および XAPOFX はすべてオペレーティング システムに組み込まれています。ストア版以外の場合、[XAudio2Redist](https://aka.ms/XAudio2Redist) を利用でき、これは Windows 7 SP1 以降で XAudio2.9 をサポートするシンプルなアプリケーション ローカルの再配布可能パッケージです。これによりデプロイが簡素化され、レガシー XAudio 2.7 の既知の多くのバグに対処できます。[Microsoft Docs](https://learn.microsoft.com/windows/win32/xaudio2/xaudio2-versions) を参照してください。

* **XInput** の場合、最良のオプションは、Windows 10 SDK のヘッダーを使用して XInput 1.4 を使用することです。Windows 10 では、XInput 1.4 はオペレーティング システムに含まれています。ストア版以外の場合、Windows Vista までさかのぼってオペレーティング システムに含まれる XInput 9.1.0 を利用できます。[この blog ポスト](https://aka.ms/Mu9kn7) を参照してください。

> レガシー XInput 1.3 の使用は、既知のセキュリティ問題があるため強く推奨されません。フレームワーク パッケージのバージョンは、この問題を軽減するために更新されており、SHA-256 コード署名にも更新されていますが、元のレガシー DirectX End-User Runtime パッケージは変更されていません。

* **Direct3D 10** (`d3dx10`) の場合、最良のオプションは Direct3D 11 にアップグレードすることです。[Microsoft Docs](https://learn.microsoft.com/windows/win32/direct3d11/d3d11-programming-guide-migrating) を参照してください。

* **Direct3D 11** (`d3dx11`) の場合、Direct3D 11 用のレガシー D3DX のさまざまな代替については、[この blog ポスト](https://aka.ms/Kfsdiu) を参照してください。

> 古いタイトルの場合、[Microsoft.DXSDK.D3DX](https://www.nuget.org/packages/Microsoft.DXSDK.D3DX) NuGet パッケージの使用も検討できます。これは、サイドバイサイド ライセンスで D3DX9、D3DX10、および D3DX11 の 2010 年 6 月バージョンを提供します。これらの再配布可能 DLL も SHA-256 コード署名されています。

* **HLSL コンパイラー** (`D3DCompiler`) の場合、Windows 10 SDK の最新バージョンを使用できます。Windows 10 では、これはオペレーティング システムに含まれています。ストア版以外の場合、`D3DCompiler_47.dll` をシンプルなアプリケーション ローカル ファイルとしてゲームに含めることができます。[この blog ポスト](https://aka.ms/Tuoxjd) を参照してください。

<Note>このフレームワーク パッケージもレガシー DirectX End-User Redistributable も、DirectX ランタイムを何ら変更しません。</Note>

`MicrosoftGame.config` の例:

```xml theme={null}
<Game>

  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="DX11"/>
    </DependencyList>
  </DesktopRegistration>

</Game>
```

DirectX フレームワーク パッケージを開発またはテスト マシンに取得する方法は 2 つあります。

1. Microsoft ダウンロード サイトからダウンロードし、Appx ファイルをダブルクリックしてインストールします (推奨)。[DirectX x86 フレームワーク パッケージ](https://aka.ms/directx_x86_appx)、[DirectX x64 フレームワーク パッケージ](https://aka.ms/directx_x64_appx)
2. DirectX フレームワーク依存パッケージをインストールする DirectX サンプル アプリを取得するために、実行アプリから次のリンクを入力します。(注: これは RETAIL 開発サンドボックスのマシンでのみ機能し、x64 プラットフォーム マシンを使用している場合にのみ x64 プラットフォーム版のみをインストールします): ms-windows-store://pdp/?productid=9MTF6XHMN17Z

<Note>DirectX フレームワーク パッケージは、これらの DLL を System32 フォルダーにインストールしません。それらは、実行時にパッケージ アプリケーションの検索パスにあります。明示的リンクを使用している場合、これらのレガシー DirectX ライブラリを読み込むために `LoadLibraryEx` フラグの `LOAD_LIBRARY_SEARCH_SYSTEM32` または `LOAD_LIBRARY_SEARCH_APPLICATION_DIR` を使用しないでください。</Note>

> このフレームワーク パッケージの 9.29.1974.0 バージョンには、SHA-256 コード署名されたペイロード DLL、および XInput 1.3 のセキュリティ修正が含まれています。

## Visual Studio C++ ランタイム

C/C++ ランタイムの特定のケースでは、従来の再配布可能形式とフレームワーク パッケージ形式は常に同一ではありません。従来の Microsoft Store 以外のアプリは、常に従来の再配布可能形式を使用してきました。

| **Visual C/C++ バージョン** | **推奨事項**                                                                                                                 |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| 2015、2017、2019、2022    | 従来の再配布可能形式とフレームワーク パッケージ形式は同一で、どちらを選択してもかまいません。ただし、ベスト プラクティスとしてフレームワーク パッケージの使用を推奨します。                                  |
| 2013                   | MSIXVC パッケージ アプリはフレームワーク バージョンを使用する必要があります。使用しないと、一部の API が予期しない動作をする可能性があります。                                           |
| 2012                   | MSIXVC パッケージ アプリはフレームワーク バージョンを使用する必要があります。使用しないと、一部の API が予期しない動作をする可能性があります。                                           |
| 2010 以前                | MSIXVC パッケージ アプリは、従来の再配布可能形式のルース ファイルをアプリのフォルダー内の適切なサブフォルダーに組み込む必要があります。これらのバージョンでは、従来の再配布可能形式もフレームワーク パッケージも使用しないでください。 |

前述のインストーラーは、必要なフレームワーク パッケージを次の *Extension SDKs* フォルダーに配置します。

%PROGRAMFILES(X86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs

アプリのアーキテクチャに対応するバージョン (x86 または x64) をサイドロードするようにしてください。

パッケージとそのフレームワーク依存関係をローカルでテストするには、アプリケーションがビルドされた Visual Studio のバージョンを特定し、対応する APPX フレームワーク パッケージをサイドロードして、アプリを登録します。

詳細については、[Microsoft Docs](https://learn.microsoft.com/troubleshoot/cpp/c-runtime-packages-desktop-bridge) を参照してください。

### Visual Studio 2012

以下は、Visual Studio 2012 VCLibs フレームワーク パッケージ v11 のマニフェスト エントリの例です。

```xml theme={null}
  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="VC11"/>
    </DependencyList>
  </DesktopRegistration>
```

このフレームワーク パッケージをサイドロードするには

* **x86:**

  1. フレームワーク パッケージを見つけます。

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx

  2. それをダブルクリックしてインストールするか、次の Windows PowerShell コマンドを実行します。

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx"`

* **x64:**

  1. フレームワーク パッケージを見つけます。

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.11.00.Desktop.appx

  2. それをダブルクリックしてインストールするか、次の Windows PowerShell コマンドを実行します。

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.11.00.Desktop.appx"`

### Visual Studio 2013

以下は、Visual Studio 2012 VCLibs フレームワーク パッケージ v12 のマニフェスト エントリの例です。

```xml theme={null}
  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="VC12"/>
    </DependencyList>
  </DesktopRegistration>
```

このフレームワーク パッケージをサイドロードするには

* **x86:**

  1. フレームワーク パッケージを見つけます。

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.12.00.Desktop.appx

  2. それをダブルクリックしてインストールするか、次の Windows PowerShell コマンドを実行します。

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx"`

* **x64:**

  1. フレームワーク パッケージを見つけます。

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.12.00.Desktop.appx

  2. それをダブルクリックしてインストールするか、次の Windows PowerShell コマンドを実行します。

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.12.00.Desktop.appx"`

### Visual Studio 2015 - 2022

以下は、Visual Studio 2015 以降の VCLibs フレームワーク パッケージ v14 のマニフェスト エントリの例です。

```xml theme={null}
  <DesktopRegistration>
    <DependencyList>
      <KnownDependency Name="VC14"/>
    </DependencyList>
  </DesktopRegistration>
```

このフレームワーク パッケージをサイドロードするには

* **x86:**

  1. フレームワーク パッケージを見つけます。

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.14.00.Desktop.appx

  2. それをダブルクリックしてインストールするか、次の Windows PowerShell コマンドを実行します。

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.14.00.Desktop.appx"`

* **x64:**

  1. フレームワーク パッケージを見つけます。

     C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx

  2. それをダブルクリックしてインストールするか、次の Windows PowerShell コマンドを実行します。

     `add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx"`

VS 2015 Update 3、VS 2017、VS 2019、および VS 2022 はすべて同じ REDIST を使用しており、VS 2022 が最新であることを覚えておいてください。詳細については、[Microsoft Docs](https://learn.microsoft.com/cpp/porting/binary-compat-2015-2017) を参照してください。

## ローカル テスト

適切なマニフェストへの参照を含め、APPX フレームワーク パッケージをサイドロードした後、次のコマンドを使用してアプリのルース ビルド バージョンをインストールします。

`WdApp.exe register loose_build_path`

これにより、アプリがインストールされ、適切なフレームワークを参照していることが保証されます。次に、スタート メニューのタイルからアプリを実行し、アプリに必要なテストと検証の手順を実行します。

サイドロード構成でのテストが完了したら、[MSIXVC パッケージング ツールを使用した PC 向けタイトルのパッケージングのはじめに](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC) のトピックに記載されている手順を使用して MSIXVC パッケージを作成します。

詳細については、
[Centennial プロジェクトでの Visual C++ ランタイムの使用](https://blogs.msdn.microsoft.com/vcblog/2016/07/07/using-visual-c-runtime-in-centennial-project/) ブログの投稿を参照してください。


## Related topics

- [XBOX GDK タイトルのパッケージングとデプロイ](/ja-jp/build/core-features/common/packaging/index.md)
- [パッケージングの概要](/ja-jp/build/core-features/common/packaging/overviews/packaging.md)
- [XR-037 コンテンツ パッケージの依存関係](/ja-jp/publishing/certification/xr/xr-037.md)
- [MicrosoftGame.config 要素 - KnownDependency](/ja-jp/reference/system/microsoftgameconfig/elements/microsoftgameconfig-element-knowndependency.md)
- [MicrosoftGame.config 要素 - Dependency](/ja-jp/reference/system/microsoftgameconfig/elements/microsoftgameconfig-element-dependency.md)
