パッケージの作成 (makepkg.exe)

注意

MSIXVC2 パッケージ化の場合には、makepkg2.exe を使用します。 このツールは、MSIXVC 形式、MSIXVC2 形式、XVC 形式をサポートし、組み込みのアップロードおよび検証コマンドを含みます。 詳細については、「パッケージの作成 (makepkg2.exe)」をご覧ください。

アプリ パッケージとアプリ パッケージのメタデータを作成します。

makepkg command[/updcompat 3] [/pc] [/gameos <gameos file>] [/priorpackage <prior package file>] [/f <file name>] [/d <content directory>] [/pd <output directory>] [/l | /lk <secret_key.lekb>] [/contentid <ID>] [/productid <ProductIDGUID>] [/nocrashdump] [/resw <resw directory>] [/t <xml output directory>] [/v] [/?]

コマンド

genmap

ターゲット フォルダーの内容に基づいて、pack コマンドで使用する XML ファイルを構築します。 生成されたファイルには、1 つのチャンクが含まれています。 ファイルを編集してチャンクに分割したり、必要に応じてタグを追加したりできます。

makepkg genmap /f <targetXmlFile> /d <contentdirectory>

genid

製品 ID GUID とストア ID の間で変換します。 生成された GUID は、製品の提出時に提供された製品 ID と一致します。 製品 ID GUID を Store ID に変換できます。

makepkg genid /storeid <storeId> | /productid <productId>

pack

ディスク上のファイルから新しいアプリ パッケージを作成します。

makepkg pack /f <mapping file> /d <content directory> /pd <output package directory> /productid <ProductIDGUID> [/l | /lk <secret_key.lekb>]

マッピング ファイル内に指定されたファイルを追加して、出力パッケージ ディレクトリにアプリ パッケージを作成します。 たとえば、a.txt、b.txt、game.exe の 3 つのファイルが格納されたディレクトリの内容をパッケージ化するには、次のマッピング ファイルを使用します:

<Package>
    <Chunk Id="1000" Marker="Launch">
        <FileGroup DestinationPath="\" SourcePath=".\" Include="a.txt"/>
        <FileGroup DestinationPath="\" SourcePath=".\" Include="b.txt"/>
        <FileGroup DestinationPath="\" SourcePath=".\" Include="game.exe"/>
    </Chunk>
</Package>

マッピング ファイル スキーマの詳細については、「配置パッケージのスキーマ」をご覧ください。 /d で指定するコンテンツ ディレクトリには、MicrosoftGame.config という名前の有効なゲーム構成ファイルが含まれている必要があります。このファイルは、アプリの Visual Studio プロジェクトのビルド出力ディレクトリにあります。 ゲーム構成スキーマの詳細については、「MicrosoftGame.config スキーマ」を参照してください。

既定の makepkg pack では、テストのために、すべての開発キットによって認識される既知の暗号キーを使用して、パッケージが暗号化されます。(/lt 暗号化スイッチとも呼ばれます)。 これらのパッケージは、暗号で保護されているものと考えないでください。 安全なアップロードのためにパッケージ ファイルを保護するには /lk<ローカル EKB ファイル> スイッチ (本体の開発と申請におすすめ) または /l スイッチを使用します。これにより、既定の動作がオーバーライドされます。

MakePkg.exe は、パッケージ内の特定のファイルをスキャンし、それらを特別な registration チャンクに移動します。 これらのファイルには、MicrosoftGame.config 内で参照されているイメージ、および Resources.pri (存在する場合) があります。

注: Resources.pri ファイルを生成するには、makepkg localize を使用します。 より高度なシナリオについては、「パッケージ リソース インデックスの作成 (makepri.exe)」のコマンドライン ツールのトピックを参照してください。
これらのファイルを含むチャンクの ID 属性に "Registration" を指定することで、layout.xml ファイルにそれらを手動でレイアウトできます。

注: makepkg では、実行可能セクション内からの再配置を含むバイナリは拒否されます。 このような再配置は、読み込み時に実行可能セクションに対する変更が必要であり、これはコードへの変更を可能としてしまいます。 このため、makepkg ではそのような性質を持つバイナリを提供された場合は失敗します。 これを回避する一般的な方法の 1 つは、バイナリにコンパイルするときに、別の実行可能セクションに読み取り専用データのセクションをマージしないことです。

validate

パッケージを作成せずに検証手順を実行します。 手順には、パッケージの提出に関する問題を文書化するログ ファイルを生成するサブミッション バリデーターが含まれます。 省略可能な mapfile を除き、makepkg pack と同じパラメーターを取ります。

makepkg validate [options] [/f <mapping file>] /d <content directory> /pd <output package directory>

localize

コンテンツ ディレクトリ内の PNG ファイルと RESW ファイルから Resources.pri ファイルを生成します。 ローカライズされた情報を検出するためには、ディレクトリ内に MicrosoftGame.config ファイルが存在している必要があります。 このファイルでは、シェルのローカライズ用の言語定義とイメージ ファイルを指定する必要があります。 生成された Resources.pri は、出力ディレクトリが指定されている場合はそのルートに配置され、出力ディレクトリが指定されていない場合はコンテンツ ディレクトリに配置されます。 一時ディレクトリが指定されている場合は、手動検証のために、その一時ディレクトリ内に Resources.pri ファイルの XML 変換が生成されます。 Resources.pri ファイルの使用方法の詳細については、「MicrosoftGame.config のローカリゼーション」を参照してください。

makepkg localize [/d <content directory>] /pd <destinationdir> /resw <resw directory> /t <xml output directory> /gc <game config path>

genkey

ローカルのエスクロー キー BLOB (LEKB) を生成します。 コマンドは、ランダムなコンテンツ キーを作成し、LEKB ファイルに格納します。

makepkg pack /lk 暗号化スイッチで LEKB を使用します。 一般に、必要なすべての信頼境界に対して genkey を使用します。 たとえば、パッケージにアクセスできるユーザーに応じて、genkey を 1 回使用してスタジオ全体で 1 つのキーを使用したり、製品ごとに 1 つのキーを使用したりできます。

LEKB を生成するには

makepkg genkey /ekb <The path to save the generated LEKB file.>

LEKB を使用してパッケージを暗号化するには、/lk 暗号化スイッチを使用します:

makepkg pack /lk <The path to your LEKB file created by the genkey command.>

LEKB ファイルは、パッケージの作成中に安定した暗号化キー (/lk 暗号化) を使用するように makepkg pack のオプションとして提供する必要があります。 このキーには、次の 4 つの主な利点があります:

  1. packageutil compare は、(/l と異なり) 正確な更新サイズの予測を生成できます。
  2. (/l とは異なり) 本体と PC でコンテンツ アップデートのダウンロードに使用するのと同じアルゴリズムを使用して、パートナー センターへの差分アップロードをセキュリティで保護された形で実行できます。
  3. (/l とは異なり) 開発キットにインストールできます。
  4. これは、セキュリティで保護された暗号化キーを使用し、(/lt とは異なり) 特定の環境でのみ暗号化を解除できます。

LEKB ファイルの内容はわずかに難読化されているにすぎません。 アクセスをセキュリティで保護することで、コンテンツ パッケージのセキュリティを確保するのはユーザーの責任です。 LEKB ファイルと makepkg pack パックによって出力されたコンテンツ パッケージ ファイルを所有しているすべてのユーザーがその内容を解読できます。

: makepkg pack によって生成された .ekb ファイルと区別するために、genkey によって作成されたローカル EKB ファイルの .lekb 拡張を使用してください。 "l" は、"ローカルに作成された" ことを表します。

オプション

オプション 説明
/validationpath SubmissionValidator.dllを読み込むパスを指定します。 この値を指定しない場合、SubmissionValidator.dllMakePkg.exe と同じディレクトリから読み込まれます。
/updcompat 3 pack コマンドとともに使用します。 サポートされている値は 3 のみであり、サブファイル コンテンツの更新の粒度を使用します。
/pc pack コマンドとともに使用します。 これが PC 公開をターゲットにした MSIXVC であることを示す、オプションのパラメーターです。 このフラグを使用して作成されたパッケージは、Windows 10 PC 用にのみ配置、テスト、公開することができ、Xbox 本体を対象にすることはできません。
/priorpackage <prior package file> pack コマンドとともに使用します。 サブファイルのコンテンツ アップデートを最適化するために使用する以前のパッケージ ファイルを指定するオプションのパラメーターです。 /updcompat 3 を意味します。
/gameos <gameos file> pack コマンドとともに使用します。 パッケージに埋め込む GameOS ファイルを指定するオプションのパラメーターです。 このパラメーターを使用しない場合や、GameOS ファイルが指定されていない場合は、レイアウト ディレクトリ内で、実行可能ファイルと同じ場所に GameOs.xvd ファイルが必要です。
/storeid <storeId> genid コマンドとともに使用します。 使用するストア ID を指定します。
/f <file name> 入力ファイルを指定します。 pack または validate コマンドで使用するときは、マッピング ファイルを指定します。 appdata コマンドで使用するときは、アプリケーション マニフェスト ファイルを指定します。
/d <content directory> コンテンツ ディレクトリを指定します。 指定されたディレクトリ (プロジェクトの layout\image\loose ディレクトリなど) には有効な MicrosoftGame.config ファイルが含まれる必要があります。
/pd <output directory> 出力ディレクトリを指定します。
/lk <lekbfile> 指定された ekb ファイルを使用して、コンテンツ ライセンスでパッケージを暗号化します。 詳細については、「genkey コマンド」 を参照してください。
既定では、テスト目的で、makepkg pack はすべての開発キットによって認識される既知の暗号キーを使用してパッケージを暗号化します。 /lk スイッチと /l スイッチはどちらも既定の動作をオーバーライドします。

注: パッケージをサーティフィケーションに提出するときは、特にサーティフィケーション チームによる指示がない限り /l または /lk を使用する必要があります。
/l 一意のコンテンツ ライセンスでパッケージを暗号化します。 pack コマンドとともに使用します。
既定では、テスト目的で、makepkg pack はすべての開発キットによって認識される既知の暗号キーを使用してパッケージを暗号化します。 /lk スイッチと /l スイッチはどちらも既定の動作をオーバーライドします。

注: パッケージをサーティフィケーションに提出するときは、特にサーティフィケーション チームによる指示がない限り /l または /lk を使用する必要があります。
/maxencryptionfragments <integer> pack コマンドとともに使用します。 このオプションにより、暗号化フラグメント メタデータの予約領域が増えます。 ほとんどのゲーム パッケージでは必要ありませんが、更新の履歴が長いパッケージや、大きなファイルに対する小さな編集が多いパッケージでは、この値をオーバーライドする必要がある場合があります。 このオプションを使用する前に、このセクション認可が必須ですを参照してください。
/contentid <ID> このパッケージが属するコンテンツ ID を指定するオプションのパラメーターです。 ID は GUID です。 このパラメーターが存在しないか、00000000-0000-0000-0000-000000000000 の値で指定されている場合、パッケージ ファミリ名に基づく安定した GUID が使用されます。 このパラメーターは、提出用ビルドを準備するときは必要ありません。 これは pack コマンドとともに使用します。 packageutil compare utility を使用して更新サイズを計算できるように、このオプションを指定しないか、ゲーム製品ごとの makepkg の異なる呼び出し間でこのオプションを同じにしておくことをお勧めします。
/productid <ProductIDGUID> このパッケージが属する製品 ID を指定するオプションのパラメーターです。 ID は GUID です。 このパラメーターを指定しない場合、GUID は 00000000-0000-0000-0000-000000000000 です。 このパラメーターは、提出用ビルドを準備するときは必要ありません。 これは、pack コマンドと genid コマンドで使用されます。 ProductID は、書き込んだディスクからインストールされる DLC パッケージを列挙する必要がある場合や、システムがオフライン実行されている場合に指定します。
/symbolpaths シンボル バンドル時のシンボル解決参照の追加パスを指定できます。 パスをセミコロン区切りリストとして指定します。
/skipsymbolbundling シンボル バンドルの手順をスキップすることを指定します。 このフラグは使用しないことをお勧めします。
/skipvalidation 検証の手順をスキップすることを指定します。 このフラグを使用した場合は、サブミッション バリデーターのログ ファイルは生成されません。 サーティフィケーションに提出される可能性のあるビルドでは、このフラグを使用しないことをお勧めします。ただし、このフラグを使用すると、ローカルでの反復時間を短縮できます。
/validationcritical サブミッション バリデーターでのエラーを、MakePkg プロセスの重大なエラーとして扱うことを指定します。
/validationlanguage サブミッション バリデーター ログ ファイルをビルドするための追加言語を指定します。 この言語は BCP-47 形式で指定する必要があり、文字列リソースが使用可能な場合は、このターゲット言語で 2 番目のログ ファイルが生成されます。 現在サポートされている言語は、日本語 (ja-JP)、韓国語 (ko-KR)、および簡体字中国語 (zh-CN) です。
/t localize コマンドとともに使用します。 Resources.pri のコンテンツを XML 形式に変換するためのオプションのディレクトリです。 Resources.pri のコンテンツを XML 形式で表示すると、Resources.pri のコンテンツが想定どおりであることを確認するのに便利です。
/resw localize コマンドとともに使用します。 RESW ファイルが直接のルート ディレクトリに存在しない場合に、RESW ファイルが含まれる、ルート ディレクトリに対する相対パスのオプション ディレクトリです。
/gc localize コマンドとともに使用します。 コンテンツディレクトリのベースにない場合、または MicrosoftGame.config 以外の名前の場合の MicrosoftGame.config ファイルへのオプションのパス。
/v コンソールへの詳細出力を有効にします。
/loggable ログ ファイルに書き込むことが適さない制御文字を含む出力を抑制します。 たとえば、コピーの進行状況では、非詳細モードのローリング パーセンテージが使用されるため、ログ ファイルが肥大化する場合があります。
/? ヘルプを表示します。

解説

makepkg pack を実行すると、このプロセスでは、Xbox 仮想コンテナー (XVC) と呼ばれるバイナリ パッケージ ファイルが作成されます。 本体用の XVC はファイル名拡張子 .xvc を使用し、PC 用の XVC はファイル名拡張子 .msixvc を使用します。 さまざまな拡張子と共に、パッケージ名には、Xbox One ファミリ (_x) パッケージと Xbox Series X|S ファミリ (_xs) パッケージを区別するサフィックスが含まれています。

makepkg pack または makepkg validate を実行すると、プロセスにより、一連の検証テストが実行されます。 これらのテストにかかる時間は、タイトルのサイズとファイルの数によって異なります。

検証テストの結果は、アプリ パッケージの出力と同じ出力ディレクトリの XML ファイルに記録されます。 ログには、タイトルを検証に合格させるために修正する必要がある、すべてのエラーが列記されます。 検証テストでは、これまでの経験的にインジェストおよびサーティフィケーション プロセスで遅延や拒否につながる一般的なエラーを確認します。

makepkg によって設定される終了コードは次のとおりです。

終了コード 説明
0 成功
1 不適切な環境: カーネル ドライバーがインストールされていない。管理者特権のコマンド プロンプトで実行されていない
2 無効なコマンド ライン
3 出力作成の失敗

このプロセスでは、より広範な情報も stderr に記録されます。

関連項目

配置パッケージのスキーマ

パッケージ リソース インデックスの作成 (makepri.exe)

MicrosoftGame.config