> ## 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.

# Submission Validator の品質チェック

> Submission Validator の品質チェック

Submission Validator が識別する問題の種類は、時間とともに増え、進化します。目標は、提出から認定、そして市場までの道のりを円滑にすることです。

Submission Validator は次の品質チェックを実行します。

* [使用可能なバージョン](#ID4EY)
* [承認された GDK バージョン](#ID4AGDK)
* [承認されたゲーム OS](#ID4EKB)
* [コンテンツ (ダウンロード可能コンテンツ (DLC)) の最終チャンクの起動マーカー](#ID4EHD)
* [追加の Resources.pri ファイル](#ID4EDE)
* [不足している Resources.pri ファイル](#ID4ERF)
* [パッケージあたり 1 つのアプリケーション](#ID4EBBAC)
* [最大パッケージ サイズ](#ID4E3BAC)
* [外部ファイル](#ID4EDCAC)
* [バイナリ スキャン](#ID4EEEAC)
* [Microsoft (MS) コンポーネントのバージョン](#ID4ESFAC)
* [不足している依存ファイル](#ID4MDF)
* [ARM64 バイナリ](#IDDKDF)

<a id="ID4EY" />

## 使用可能なバージョン

Submission Validator は、インストールしたバージョンが最新かつ正しいバージョンであることを確認します。そうでない場合、Submission Validator の出力ログには失敗が表示されます。次のセクションに示す失敗メッセージには、正しいバージョンをダウンロードするためのリンクが含まれています。

```xml theme={null}
<component>Available Version Check</component>
<failure>A required update to Submission Validator is available. The latest version can be downloaded from https://aka.ms/currentsubvalzip. Download and install the update, then rebuild the package. Contact your 
Developer Account Manager for assistance.</failure> 
```

<a id="ID4AGDK" />

## 承認された GDK バージョン

PC (msixvc) 向けの GDK パッケージを作成すると、Submission Validator は、パッケージ化に使用した GDK が承認された GDK バージョンからのものであることをチェックします。バージョンが承認済みまたは非推奨のリストにない場合、バリデーター ログには失敗が表示されます。

```xml theme={null}
<failure>ILI_PcGdkUnsupportedThe GDK used to compile your binaries is not supported. Use only supported GDK versions according to the Approved Libraries page located at https://aka.ms/GdkApprovedLibs</failure>
```

バージョンが非推奨リストにある場合、バリデーター ログには情報メッセージが表示されます。このメッセージは、バージョンが有効期限切れであり、今後はホットフィックスを受け取れないことを示します。

```xml theme={null}
<info>The GDK used to compile your binaries is expired and will no longer receive hotfixes.</info>
```

Submission Validator がパッケージに含まれるファイルから GDK バージョンを判定できない場合 (たとえば、ファイルが暗号化されているため)、次のメッセージが表示されます。

```xml theme={null}
<info>A GDK version was not able to be extracted from your game executable. The version of the tools used for packaging will be used as the GDK version for this submission. If this is not correct, ensure any executables listed in your MicrosoftGame.config include XGameRuntime.h or you include appropriate middleware which consumes this header. See https://aka.ms/EmbeddedGdkVersion for more information.</info>
```

<a id="EmbeddedGdkVersion" />

### ゲーム実行可能ファイルへの GDK バージョン埋め込みの仕組み

`XGameRuntime.h` を含む GDK を使用してゲーム実行可能ファイルをコンパイルすると、コンパイラは GDK バージョンを `.xbld` という名前のカスタム PE セクションに埋め込みます。Submission Validator はこのセクションを読み取って、タイトルのバイナリのビルドに使用された GDK バージョンを判別します。

`.xbld` セクションが不足している、または読み取れない場合、Submission Validator は代わりにパッケージング ツールのバージョンを送信の GDK バージョンとしてフォールバックとして使用します。このバージョンは、バイナリをコンパイルするのに使用された GDK バージョンを正確に表していない可能性があります。

**一般的な原因: アンチタンパー ソフトウェア**

実行可能ファイルを処理するアンチタンパーおよびデータ暗号化ツールが、`.xbld` セクションを暗号化または削除する場合があります。この操作により、そのセクションが Submission Validator によって読み取れなくなります。この問題を解決するには、アンチタンパー ツールを構成して `.xbld` セクションを処理から除外します。

#### Themida

Themida の構成ファイルで、次の **Advanced Option** (コンマ区切り) を追加して、`.xbld` セクションを保護から除外します。

```
OPTION_ADVANCED_DONT_PROCESS_SECTIONS=.xbld
```

#### GuardIT

GuardIT でデータ暗号化から `.xbld` セクションを除外するには、暗号化ガード構成に `<exclude>` エントリを追加します。

```xml theme={null}
<guard_cmd name="EncryptionWrapper">
    <encryption_wrapper>
        <action>
            <fail />
        </action>
        <algorithm_decryption>
            <use>AES128</use>
        </algorithm_decryption>
        <algorithm_integrity>
            <use>fast</use>
        </algorithm_integrity>
        <protected_types>
            <custom>
                <data>true</data>
                <native_code>true</native_code>
                <unused_areas>true</unused_areas>
            </custom>
        </protected_types>
        <exclude>
            <range>
                <section matching="exact">.xbld</section>
            </range>
        </exclude>
        <debug>false</debug>
        <disable>false</disable>
    </encryption_wrapper>
</guard_cmd>
```

`<exclude>` セクションは、`.xbld` が暗号化されるのを防ぎます。

<a id="ID4EKB" />

## 承認されたゲーム OS

Submission Validator は、ゲーム OS および Microsoft Game Development Kit (GDK) からの任意のオプション コンポーネントが同じ Microsoft Game Development Kit (GDK) リリースからのものであり、リリース タイトルで使用するために承認されたバージョンであることをチェックします。バージョンが承認済みまたは非推奨リストにない場合、次のセクションに示すように、バリデーター ログに失敗が含まれます。

```xml theme={null}
<failure>The GameOS included in this package is not an approved version. Use only 
supported GameOS versions according to the Approved Libraries page on the Developer 
Network Portal</failure>  
```

バージョンが非推奨リストにある場合、バリデーター ログには情報メッセージが含まれます。次のセクションに示すように、このメッセージはバージョンが有効期限切れであり、今後はホットフィックスを受け取れないことを示します。

```xml theme={null}
<info>The GameOS included in this package is expired and will no longer receive hotfixes.</info>  
```

コンポーネントのバージョンが相互に一致しない場合、またはバージョンが承認済みまたは非推奨リストにない場合、次のセクションに示すように、バリデーター ログに失敗が含まれます。

```xml theme={null}
<failure>The GameOS version does not match the version of other Microsoft components 
included in this package. Use only components from the same Microsoft Game Development Kit (GDK)/Xbox One Software Development Kit release. Refer to the 
Approved Libraries page on the Developer Network Portal</failure>  
```

<Note>Submission Validator を実行している開発 PC がオンライン情報にアクセスできない場合 (たとえば、インターネット アクセスがない、ファイアウォールでブロックされている、ネットワーク接続がないなど)、Submission Validator は検証チェックを完了しないことがあります。</Note>

<a id="ID4EHD" />

## コンテンツ (ダウンロード可能コンテンツ (DLC)) の最終チャンクの起動マーカー

すべてのシナリオで正しく動作するようにするには、コンテンツ パッケージは最終チャンクに起動マーカー属性を付ける必要があります。最終チャンクに起動マーカーが含まれていない場合、パッケージは正しくテストできますが、場合によってはエンド ユーザーに問題を引き起こす可能性があります。失敗メッセージは次のとおりです。

```xml theme={null}
<failure>Content Packages require final layout chunk to include attribute marker="Launch"</failure>  
```

<a id="ID4EWD" />

<a id="ID4EDE" />

## 追加の Resources.pri ファイル

Submission Validator は、レイアウトの他のディレクトリに追加の *Resources.pri* ファイルが存在しないことをチェックします。*MicrosoftGame.config* と同様に、ルートにあるものだけが使用されます。ただし、複数のコピーがあると、どれが正しいのか、これら他のファイルに関する開発者の意図は何かについて混乱を招く可能性があります。

このチェックは、追加の MicrosoftGame.config コピーに対する同様のチェックと並行しています。この場合、追加のコピーは、次のセクションに示すように、ログの Foreign Files Check セクションで失敗となります。

```xml theme={null}
<failure>D:\path\mytitle\mytitlesubdirectory\resources.pri</failure>  
```

<a id="ID4ERF" />

## 不足している Resources.pri ファイル

アプリケーションはローカライズする必要はありません。ただし、アプリケーションがルート (MicrosoftGame.config と同じ場所) に *Resources.pri* ファイルを含まない場合、出力ログの Foreign Files Check セクションに次の警告が表示されます。

```xml theme={null}
<warning>Non-localized app: 'resources.pri' is missing</warning>  
```

<a id="ID4EBBAC" />

## パッケージあたり 1 つのアプリケーション

Submission Validator は現在、パッケージに DevOnly ではないアプリケーションが 1 つだけ含まれていることを検証します。

<a id="ID4E3BAC" />

## 最大パッケージ サイズ

ディスクで出荷する場合、Submission Validator はパッケージのサイズが 49,900,000,000 バイトを超えていないことをチェックします。このチェックは情報メッセージのみを提供し、エラーではありません。

ディスクで出荷しない場合、Submission Validator はパッケージのサイズが 500 GB を超えていないことをチェックします。また、パッケージ サイズが 450 GB を超えると警告メッセージも提供します。メッセージは次のとおりです。

```xml theme={null}
(WARNING) ILI_XvcPackageSizeApproached: "The size of this package is approaching the maximum allowed size for uploading to Partner Center. The maximum size of a package for uploading to Partner Center is {0} GB."
```

```xml theme={null}
(FAILURE) ILI_XvcPackageSizeExceeded: "The size of this package exceeds the maximum allowed size for uploading to Partner Center. The maximum size of a package for uploading to Partner Center is {0} GB."
```

<a id="ID4EDCAC" />

## 外部ファイル

XBOX 360 プログラムの提出を確認する際に遭遇する問題の 1 つは、通常誤って、リテール タイトルの一部であるべきではないさまざまなファイルが提出に含まれていることです。

Foreign File Check は、レイアウト .xml ファイルを使用して、タイトル パッケージに持ち込まれるすべてのファイルについて、パッケージで許可されていない特定のファイル名と拡張子をチェックします。このチェックはファイルの内容ではなく、ファイル名のみに基づきます。許可されないファイルには、ソースおよびデバッグ ファイルに関連する拡張子、Thumb.db、ルート以外の場所にある不要な登録ファイル、そしてタイトル パッケージに含まれてはいけない XBOX オペレーティング システム ファイルの完全なリストが含まれます。このチェックは、XBOX 要件 XR-003: 提出のためのタイトルの品質を検証します。

次の表は、提出されるタイトル パッケージで許可されていないファイル タイプと拡張子を示します。

| ファイル タイプ        | 拡張子                      |
| --------------- | ------------------------ |
| ソース コード関連ファイル   | .c .cpp、.cs、.lib、.h、.obj |
| デバッグ/シンボル情報ファイル | .pdb、.sym                |
| レガシー バイナリ ファイル  | .xbe                     |

タイトルは、ほとんど想定可能な任意のファイル拡張子を正当に使用する可能性があり、これは拡張子チェックとの潜在的な競合につながる可能性があります。この状況がタイトルに影響する場合は、Partner Development Manager (PDM) に警告してください。

Submission Validator ログで失敗メッセージを受け取ったファイルをタイトル パッケージに含める必要がある例外的なケースがあると思われる場合は、PDM に相談してください。

次の例は、Foreign File Check の失敗を報告するログ出力を示しています。

```xml theme={null}
<component>Foreign File Check</component>
<failures>
  <failure>c:\MyTitle\loose\bar.cpp</failure>
  <failure>c:\MyTitle\loose\MySubDir\example.h</failure>
  <failure>c:\MyTitle\loose\MySubDir\PDBs\BlockedFiles\foo.pdb</failure>
</failures>
<filecount>3</filecount>  
```

<a id="ID4EEEAC" />

## バイナリ スキャン

XBOX コンソール バイナリ (.exe および .dll) ファイルは AMD64 用にビルドされ、ネイティブ コードのみである必要があります。現時点では、プラットフォームはマネージ コード バイナリをサポートしていません。Binary Scan Check は、タイトル パッケージに含まれる各 .exe および .dll ファイルを検査し、これらの要件を満たしていることを確認します。このチェックを使用して、XR-003: 提出のためのタイトルの品質を検証します。

Binary Scan セクションでは、各 .exe および .dll ファイルが、リテール コンソールでセキュリティ上の理由からブロックされている依存関係についてチェックされます。一般に、このブロックはプラットフォーム ファイル、PIXEvt.dll、または XBOX Studio のデバッグ バージョンへのリンクの形で行われます。

次の例は、Binary Scan Check の失敗を報告するログ出力を示しています。最初の 2 つの失敗は、.exe ファイルがリテール コンソールで許可されていない 2 つのファイルにリンクしていることに起因します。3 つ目の失敗は、マネージド .exe ファイルです。最後の失敗は、AMD64 以外のネイティブ コード .dll ファイルです。

```xml theme={null}
<component>Binary Scan</component>
      <dumpbinlocation>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\dumpbin.exe</dumpbinlocation>
      <failures>
   <failure>Non-retail dependency in file c:\MyTitle\loose\ExeWithDebugDependencies.exe: MSVCR110D.dll</failure>
  <failure>Non-retail dependency in file c:\MyTitle\loose\ExeWithDebugDependencies.exe: PIXEvt.dll</failure>
  </failures>
  <failure>Managed: Not AMD64: c:\MyTitle\loose\MySubDir\ABC.exe</failure>
  <failure>Not AMD64: c:\MyTitle\loose\MySubDir\XYZ.dll</failure>
</failures>  
```

開発者は、提出パッケージに含めるバイナリのリリース ビルドから、こうしたデバッグ重視の依存関係が除外されていることを確認する必要があります。

<a id="ID4ESFAC" />

## Microsoft コンポーネントのバージョン

Game OS は XBOX のプラットフォーム表面領域の大部分をカバーしています。ただし、タイトルは Microsoft 提供のバイナリ セットを再配布します。XBOX Developer Forums サイトの [Approved Libraries](https://aka.ms/GdkApprovedLibs) ページには、これらのファイルとその承認されたバージョンが記載されています。

Submission Validator は、これらのファイルのバージョンをチェックし、任意のオプションの DLL ファイルが一致するバージョンであることを確認します。また、排他パーティションのタイトルが XVC にパッケージ化した Game OS のバージョン ID もキャプチャします。提出前に、公開されている承認済みライブラリ情報に対してバージョンをチェックしてください。

Submission Validator はまた、タイトルに含まれている場合は、オプションの Kinect と XBOX サービスの DLL ファイルのバージョン情報も抽出します。

次の例は、Submission Validator ログ ファイルに表示されるバージョン情報を示しています。

```xml theme={null}
<component>MS Component Versions</component>
<component name="GameOS">60BBA05C-22F0-4452-84B6-DD278594716E</component>
<component name="Microsoft.Xbox.Services.dll">10.0.18362.7198</component>  
```

<a id="ID4MDF" />

## 不足している依存ファイル

依存ライブラリに動的にリンクする場合、これらのライブラリが不足していると、Submission Validator は次の失敗を含めます。

```xml theme={null}
<failure>{0}: Binary file has a dependency on a file that is not included in the layout: {1}. This file must be included in the layout for your package.</failure>
```

<a id="IDDKDF" />

## ARM64 バイナリ

PC 向けのゲーム パッケージには、既存の x64 コンパイルされた実行可能ファイルと並んで ARM64 バイナリを含めることができます。Submission Validator は、MicrosoftGame.config が適切な実行可能ファイルを正しく参照していることを確認します。

```xml theme={null}
<failure>Executable with the Architecture attribute set to ARM64 is not compiled for the ARM64 platform. Please ensure the attributes are set correctly for this executable in your MicrosoftGame.config file.</failure>
```

```xml theme={null}
<failure>Executable is compiled for the ARM64 platform but does not have the Architecture attribute set to ARM64. Please ensure the attributes are set correctly for this executable in your MicrosoftGame.config file.</failure>
```

<a id="ID4E5OAC" />

## 関連項目

[Submission Validator (SubmissionValidator.dll)](/build/core-features/common/packaging/subval/submissionvalidator)

[Submission Validator メッセージ](/build/core-features/common/packaging/subval/submissionvalidator-messages)

[Make package (makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg)

[タイトル パッケージング、コンテンツ更新、およびストリーミング インストールのテスト](/build/core-features/common/packaging/title-packaging-streaming-install-testing)

XBOX 要件 (XRs) [(XBOX Developer Downloads->Partner, Publishing, and Release Management Information->XGD Partner Documentation)](https://aka.ms/xgddl)


## Related topics

- [Submission Validator (SubVal) 品質チェック リファレンス](/ja-jp/build/core-features/common/packaging/subval/index.md)
- [Submission Validator (SubmissionValidator.dll)](/ja-jp/build/core-features/common/packaging/subval/submissionvalidator.md)
- [Submission Validator メッセージ](/ja-jp/build/core-features/common/packaging/subval/submissionvalidator-messages.md)
- [XR-003 提出時のタイトル品質](/ja-jp/publishing/certification/xr/xr-003.md)
- [パッケージ（クラシックエクスペリエンス）](/ja-jp/publishing/game-publishing/concepts/packages-overview.md)
