パッケージの作成 (makepkg.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
ターゲット フォルダーの内容に基づいて、パック コマンドで使用する XML ファイルをビルドします。 生成されたファイルには 1 つのチャンクがあり、編集して複数のチャンクに分割したり、必要に応じてタグを指定したりすることができます。
makepkg genmap /f <targetXmlFile> /d <contentdirectory>
genid
製品 ID GUID とストア ID の間で変換します。 生成された GUID は、製品の送信時に提供された製品 ID と一致します。 商品 ID GUID をストア 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 の名前で有効なゲーム構成ファイルが含まれている必要があります。MicrosoftGame.config ファイルは、アプリの Visual Studio プロジェクトのビルド出力ディレクトリにあります。 ゲーム config スキーマについては、「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 <mapfile>] /d <sourcedir> /pd <destinationdir>
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 ファイルに保存されます。
生成される LEKB は、makepkg pack /lk 暗号化スイッチで使用します。 一般に、必要なすべての信頼境界に対して 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 つの主な利点があります。
- packageutil compare は、 (/l と異なり) 正確なアップデート サイズの予測を生成できます。
- コンソールと PC でコンテンツ更新のダウンロードに使用するのと同じアルゴリズムを使用して、パートナー センターへの差分アップロードをセキュリティで保護された形で実行できます。 (unlike /l)
- これは (/l とは異なり)、開発キットにインストールできます。
- これは、セキュリティで保護された暗号化キーを使用し、(/lt とは異なり) 特定の環境でのみ暗号化を解除できます。
LEKB ファイルの内容はわずかに難読化されているにすぎません。 LEKB ファイルへのアクセスをセキュリティで保護することで、コンテンツ パッケージのセキュリティを確保するのはユーザーの責任です。 makepkg パックによって出力された LEKB ファイルとコンテンツ パッケージ ファイルを所有しているすべてのユーザーがその内容を解読できます。
注:
makepkg pack
によって生成された.ekb
ファイルと区別するために、genkey によって作成されたローカル EKB ファイルの拡張子.lekb
をお勧めします。"l" は "ローカルに作成された" ことを表しています。
オプション
オプション | 説明 |
---|---|
/validationpath | SubmissionValidator.dll の読み込みに使用するパスを指定します。 この値が指定されていない場合、SubmissionValidator.dll は MakePkg.exe と同じディレクトリから読み込まれます |
/updcompat 3 | pack コマンドとともに使用します。 サポートされている値は 3 のみであり、サブファイル コンテンツの更新の粒度を使用します。 |
/pc | pack コマンドとともに使用します。 これが PC 公開をターゲットにした MSIXVC であることを示す、オプションのパラメーターです。 このフラグを使用して作成されたパッケージは、Windows 10 PC 用にのみ配置、テスト、公開することができ、Xbox 本体を対象にすることはできません。 |
/priorpackage <以前のパッケージ ファイル> | pack コマンドとともに使用します。 サブファイルのコンテンツ アップデートを最適化するために使用する以前のパッケージ ファイルを指定するオプションのパラメーターです。 /updcompat 3 を意味します。 |
/gameos <gameos ファイル> | pack コマンドとともに使用します。 パッケージに埋め込む gameos ファイルを指定するオプションのパラメーターです。 このパラメーターを使用しない場合や、gameos ファイルが指定されていない場合は、レイアウト ディレクトリ内で、実行可能ファイルと同じ場所に era.xvd ファイルが必要です。 |
/storeid <storeId> | genid コマンドとともに使用します。 使用するストア ID を指定します。 |
/f <ファイル名> | 入力ファイルを指定します。 pack または validate コマンドで使用するときは、マッピング ファイルを指定します。 appdata コマンドで使用するときは、アプリケーション マニフェスト ファイルを指定します。 |
/d <コンテンツ ディレクトリ> | コンテンツ ディレクトリを指定します。 指定されたディレクトリ (プロジェクトの layout\image\loose ディレクトリなど) には有効な MicrosoftGame.config ファイルが含まれる必要があります。 |
/pd <出力ディレクトリ> | 出力ディレクトリを指定します。 |
/lk <lekbfile> | 指定された ekb ファイルを使用して、コンテンツ ライセンスでパッケージを暗号化します。 詳細については、「genkey コマンド」 を参照してください。 既定では、テスト目的で、makepkg pack はすべての開発キットによって認識される既知の暗号キーを使用してパッケージを暗号化します。 /lk スイッチと /l スイッチはどちらも既定の動作をオーバーライドします。 注: パッケージをサーティフィケーションに提出するときは、特にサーティフィケーション チームによる指示がない限り /l または /lk を使用する必要があります。 |
/l | 一意のコンテンツ ライセンスでパッケージを暗号化します。
pack コマンドとともに使用します。 既定では、テスト目的で、makepkg pack はすべての開発キットによって認識される既知の暗号キーを使用してパッケージを暗号化します。 /lk スイッチと /l スイッチはどちらも既定の動作をオーバーライドします。 注: パッケージをサーティフィケーションに提出するときは、特にサーティフィケーション チームによる指示がない限り /l または /lk を使用する必要があります。 |
/contentid <ID> | このパッケージが属するコンテンツ ID を指定するオプションのパラメーターです。 ID は GUID です。 このパラメーターが存在しないか、00000000-0000-0000-0000-000000000000 の値で指定されている場合、パッケージ ファミリ名に基づく安定した GUID が使用されます。 このパラメーターは、提出用ビルドを準備するときは必要ありません。 これは pack コマンドとともに使用します。 packageutil compare ユーティリティを使用して更新サイズを計算できるように、このオプションを指定しないか、ゲーム製品ごとの 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 用は .msixvc です。 拡張機能の違いに加えて、Xbox One ファミリ (_x) と Xbox Series X|S ファミリ (_xs) のパッケージを区別するために、パッケージ名にサフィックスが追加されました。
makepkg pack または makepkg validate を実行すると、一連の検証テストが実行されます。 これらのテストにかかる時間は、タイトルのサイズやファイル数によって変わります。
検証テストの結果は、アプリ パッケージの出力に使用されるのと同じ出力ディレクトリにある XML ファイルに記録されます。 ログには、タイトルを検証に合格させるために修正する必要がある、すべてのエラーが列記されます。 検証テストでは、タイトルがマスタリングおよびサーティフィケーション プロセスに遅れたり後で却下されたことがある一般的なエラーをチェックします。
makepkg によって設定される終了コードは次のとおりです。
終了コード |
説明 |
---|---|
0 | 成功 |
1 | 不適切な環境: カーネル ドライバーがインストールされていない。管理者特権のコマンド プロンプトで実行されていない |
2 | 無効なコマンド ライン |
3 | 出力作成の失敗 |
さらに詳細な情報が stderr にも記録されます。