次の方法で共有


MakeAppx.exe を使用して MSIX パッケージまたはバンドルを作成する

MakeAppx.exe は、アプリ パッケージ (.msix または .appx) とアプリ パッケージ バンドル (.msixbundle または .appxbundle) の両方を作成します。 MakeAppx.exe は、アプリ パッケージまたはバンドルからファイルを抽出し、アプリ パッケージとバンドルを暗号化または復号化します。 このツールは Windows 10 SDK に含まれており、コマンド プロンプトまたはスクリプト ファイルから使用できます。

MakeApp.exe を使用してデスクトップ アプリをパッケージ化する方法については、「デスクトップ アプリを手動でパッケージ化する」を参照してください。

重要

Visual Studio を使用してアプリを開発した場合は、Visual Studio ウィザードを使用してアプリ パッケージを作成することをお勧めします。 詳細については、「 Visual Studio を使用して UWP アプリをパッケージ 化する」および「Visual Studio を 使用してソース コードからデスクトップ アプリをパッケージ化する」を参照してください。

重要

MakeAppx.exe では、パートナー センターへの申請に有効なアプリ パッケージの推奨される種類であるアプリ パッケージ アップロード ファイル (.appxupload または .msixupload) は作成されないことに注意してください。 アプリ パッケージのアップロード ファイルは通常、 Visual Studio のパッケージ化プロセスの一部として作成されますが、 手動で作成することもできます。

MakeAppx.exe の使用

SDK のインストール パスに基づいて、 MakeAppx.exeは Windows 10 PC 上にあります。

  • C:\Program Files (x86)\Windows Kits\10\bin\<ビルド番号>\<アーキテクチャ>\makeappx.exe

「<アーキテクチャ>」が x86、x64、arm、arm64、または chpe である場合。 または、次の場所に配置されている場合があります。

  • C:\Program Files (x86)\Windows Kits\10\App Certification Kit\makeappx.exe

MakeAppx.exe 構文とオプション

一般的な MakeAppx.exe 構文:

MakeAppx <command> [options]      

次の表では、 MakeAppx.exeのコマンドについて説明します。

命令 説明
パック パッケージを作成します。
解凍 指定したパッケージのすべてのファイルを指定した出力ディレクトリに抽出します。
バンドル バンドルを作成します。
分解する バンドルまたはパッケージの完全名に基づく指定された出力パスの下のサブディレクトリにすべてのパッケージをアンパックします。
暗号化 指定された出力パッケージまたはバンドルの入力パッケージまたはバンドルから、暗号化されたアプリ パッケージまたはバンドルを作成します。
解読する 指定された出力パッケージ/バンドルで、入力アプリ パッケージ/バンドルから復号化されたアプリ パッケージまたはバンドルを作成します。

このオプションの一覧は、すべてのコマンドに適用されます。

オプション 説明
/d 入力、出力、またはコンテンツ ディレクトリを指定します。
/l ローカライズされたパッケージに使用されます。 ローカライズされたパッケージのデフォルト検証トリップ。 このオプションでは、すべての検証を無効にしなくても、その特定の検証のみが無効になります。
/kf 指定したキー ファイルのキーを使用して、パッケージまたはバンドルを暗号化または復号化します。 これは /kt では使用できません。
/kt グローバル テスト キーを使用して、パッケージまたはバンドルを暗号化または暗号化解除します。 これは /kf では使用できません。
/いいえ 出力ファイルが存在する場合は上書きを防止します。 このオプションまたは /o オプションを指定しない場合、ユーザーはファイルを上書きするかどうかを確認するメッセージが表示されます。
/nv セマンティック検証をスキップします。 このオプションを指定しない場合、ツールはパッケージの完全な検証を実行します。
/o 出力ファイルが存在する場合は上書きします。 このオプションまたは /no オプションを指定しない場合、ユーザーはファイルを上書きするかどうかを確認するメッセージが表示されます。
/p アプリ パッケージまたはバンドルを指定します。
/v コンソールへの詳細なログ出力を有効にします。
/? ヘルプ テキストを表示します。

次の一覧には、使用できる引数が含まれています。

引数 説明
<出力パッケージ名> 作成されたパッケージの名前。 これは、.msix または .appx が付加されたファイル名です。
<暗号化された出力パッケージ名> 作成された暗号化されたパッケージの名前。 これは、.emsix または .eappx が付加されたファイル名です。
<入力パッケージ名> パッケージの名前。 これは、.msix または .appx が付加されたファイル名です。
<暗号化された入力パッケージ名> 暗号化されたパッケージの名前。 これは、.emsix または .eappx が付加されたファイル名です。
<出力バンドル名> 作成されたバンドルの名前。 これは、.msixbundle または .appxbundle が付加されたファイル名です。
<暗号化された出力バンドル名> 作成された暗号化されたバンドルの名前。 これは、.emsixbundle または .eappxbundle が付加されたファイル名です。
<入力バンドル名> バンドルの名前。 これは、.msixbundle または .appxbundle が付加されたファイル名です。
<暗号化された入力バンドル名> 暗号化されたバンドルの名前。 これは、.emsixbundle または .eappxbundle が付加されたファイル名です。
<コンテンツ ディレクトリ> アプリ パッケージまたはバンドル コンテンツのパス。
<マッピング ファイル> パッケージのソースとコピー先を指定するファイル名。
<出力ディレクトリ> 出力パッケージとバンドルのディレクトリへのパス。
<キー ファイル> 暗号化または暗号化解除用のキーを含むファイルの名前。
<アルゴリズム ID> ブロック マップの作成時に使用されるアルゴリズム。 有効なアルゴリズムには、SHA256 (既定)、SHA384、SHA512 が含まれます。

アプリ パッケージを作成する

アプリ パッケージは、.msix または .appx パッケージ ファイルにパッケージ化されたアプリのファイルの完全なセットです。 pack コマンドを使用してアプリ パッケージを作成するには、パッケージの場所のコンテンツ ディレクトリまたはマッピング ファイルを指定する必要があります。 パッケージの作成時に暗号化することもできます。 パッケージを暗号化する場合は、/ep を使用し、キー ファイル (/kf) またはグローバル テスト キー (/kt) のどちらを使用するかを指定する必要があります。 暗号化されたパッケージの作成の詳細については、「パッケージ またはバンドルの暗号化または暗号化解除」を参照してください。

pack コマンドに固有のオプション:

オプション 説明
/f マッピング ファイルを指定します。
/h ブロック マップの作成時に使用するハッシュ アルゴリズムを指定します。 これは pack コマンドでのみ使用できます。 有効なアルゴリズムには、SHA256 (既定)、SHA384、SHA512 が含まれます。
/m 出力アプリ パッケージまたはリソース パッケージのマニフェストを生成するための基礎として使用される入力アプリ マニフェストへのパスを指定します。 このオプションを使用する場合は、/f を使用し、マッピング ファイルに [ResourceMetadata] セクションを含め、生成されるマニフェストに含めるリソース ディメンションを指定する必要があります。
/nc パッケージ ファイルの圧縮を禁止します。 既定では、ファイルは検出されたファイルの種類に基づいて圧縮されます。
/r リソース パッケージをビルドします。 これは /m と共に使用する必要があり、/l オプションの使用を意味します。

次の使用例は、 pack コマンドで使用できる構文オプションを示しています。

MakeAppx pack [options] /d <content directory> /p <output package name>
MakeAppx pack [options] /f <mapping file> /p <output package name>
MakeAppx pack [options] /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /r /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kf <key file>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kt

pack コマンドのコマンド ラインの例を次に示します。

MakeAppx pack /v /h SHA256 /d "C:\My Files" /p MyPackage.msix
MakeAppx pack /v /o /f MyMapping.txt /p MyPackage.msix
MakeAppx pack /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p AppPackage.msix
MakeAppx pack /r /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p ResourcePackage.msix
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kf MyKeyFile.txt
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kt

アプリ バンドルの作成

アプリ バンドルはアプリ パッケージに似ていますが、バンドルを使用すると、ユーザーがダウンロードするアプリのサイズを小さくできます。 アプリ バンドルは、言語固有の資産、さまざまなイメージ スケールアセット、または Microsoft DirectX の特定のバージョンに適用されるリソースなどに役立ちます。 暗号化されたアプリ パッケージの作成と同様に、バンドル中にアプリ バンドルを暗号化することもできます。 アプリ バンドルを暗号化するには、/ep オプションを使用し、キー ファイル (/kf) とグローバル テスト キー (/kt) のどちらを使用するかを指定します。 暗号化されたバンドルの作成の詳細については、「 パッケージまたはバンドルの暗号化または暗号化解除」を参照してください。

バンドル コマンドに固有のオプション:

オプション 説明
/bv バンドルのバージョン番号を指定します。 バージョン番号は、 <Major>.< の形式でピリオドで区切られた 4 つの部分に含まれている必要があります。Minor>.<Build>.<リビジョン>。
/f マッピング ファイルを指定します。

バンドル バージョンが指定されていない場合、または "0.0.0.0" に設定されている場合、バンドルは現在の日時を使用して作成されることに注意してください。

次の使用例は、 bundle コマンドで使用できる構文オプションを示しています。

MakeAppx bundle [options] /d <content directory> /p <output bundle name>
MakeAppx bundle [options] /f <mapping file> /p <output bundle name>
MakeAppx bundle [options] /d <content directory> /ep <encrypted output bundle name> /kf MyKeyFile.txt
MakeAppx bundle [options] /f <mapping file> /ep <encrypted output bundle name> /kt

次のブロックには、 bundle コマンドの例が含まれています。

MakeAppx bundle /v /d "C:\My Files" /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kf MyKeyFile.txt
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kt

パッケージまたはバンドルからファイルを抽出する

MakeAppx.exe は、アプリのパッケージ化とバンドルに加えて、既存のパッケージをアンパックまたはバンドル解除することもできます。 抽出されたファイルの宛先としてコンテンツ ディレクトリを指定する必要があります。 暗号化されたパッケージまたはバンドルからファイルを抽出しようとしている場合は、/ep オプションを使用し、キー ファイル (/kf) またはグローバル テスト キー (/kt) を使用して暗号化を解除するかどうかを指定して、同時にファイルの暗号化を解除および抽出できます。 パッケージまたはバンドルの暗号化解除の詳細については、「パッケージまたはバンドルの 暗号化または暗号化解除」を参照してください。

コマンドのアンパックバンドル解除に固有のオプション:

オプション 説明
/nd パッケージ/バンドルをアンパックまたはバンドル解除するときに復号化を実行しません。
/pfn バンドルまたはパッケージの完全な名前に基づく指定された出力パスの下のサブディレクトリにすべてのファイルをアンパック/バンドル解除します

次の使用例は、 アンパック コマンドと unbundle コマンドで使用できる構文オプションを示しています。

MakeAppx unpack [options] /p <input package name> /d <output directory>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kf <key file>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kt

MakeAppx unbundle [options] /p <input bundle name> /d <output directory>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kf <key file>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kt

次のブロックには、 unpack コマンドと unbundle コマンドを使用する例が含まれています。

MakeAppx unpack /v /p MyPackage.msix /d "C:\My Files"
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kt

MakeAppx unbundle /v /p MyBundle.msixbundle /d "C:\My Files"
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kt

パッケージまたはバンドルの暗号化または暗号化解除

MakeAppx.exe ツールは、既存のパッケージまたはバンドルを暗号化または復号化することもできます。 パッケージ名、出力パッケージ名、暗号化または暗号化解除でキー ファイル (/kf) またはグローバル テスト キー (/kt) のどちらを使用するかだけを指定する必要があります。

暗号化と暗号化解除は、Visual Studio パッケージ 化ウィザードでは使用できません。

コマンドの暗号化暗号化解除に固有のオプション:

オプション 説明
/ep 暗号化されたアプリ パッケージまたはバンドルを指定します。

次の使用例は、 暗号化 および 暗号化解除 コマンドに使用できる構文オプションを示しています。

MakeAppx encrypt [options] /p <package name> /ep <output package name> /kf <key file>
MakeAppx encrypt [options] /p <package name> /ep <output package name> /kt

MakeAppx decrypt [options] /ep <package name> /p <output package name> /kf <key file>
MakeAppx decrypt [options] /ep <package name> /p <output package name> /kt

次のブロックには、 暗号化 および 復号化 コマンドを使用する例が含まれています。

MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

MakeAppx.exe decrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe decrypt p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

キー ファイル

キー ファイルは、文字列 "[Keys]" を含む行の後に、各パッケージを暗号化するキーを記述する行で始まる必要があります。 各キーは、スペースまたはタブで区切られた引用符で囲まれた文字列のペアで表されます。 最初の文字列は base64 でエンコードされた 32 バイトのキー ID を表し、2 番目の文字列は base64 でエンコードされた 32 バイトの暗号化キーを表します。 キー ファイルは単純なテキスト ファイルにする必要があります。

キー ファイルの例:

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

マッピング ファイル

マッピング ファイルは、文字列 "[Files]" を含む行の後に、パッケージに追加するファイルを記述する行で始まる必要があります。 各ファイルは、スペースまたはタブで区切られた引用符で囲まれたパスのペアによって記述されます。 各ファイルは、ソース (ディスク上) とコピー先 (パッケージ内) を表します。 マッピング ファイルは単純なテキスト ファイルにする必要があります。

マッピング ファイルの例 (/m オプションなし):

[Files]
"C:\MyApp\StartPage.html"               "default.html"
"C:\Program Files (x86)\example.txt"    "misc\example.txt"
"\\MyServer\path\icon.png"              "icon.png"
"my app files\readme.txt"               "my app files\readme.txt"
"CustomManifest.xml"                    "AppxManifest.xml"

マッピング ファイルを使用する場合は、/m オプションを使用するかどうかを選択できます。 /m オプションを使用すると、ユーザーは、生成されたマニフェストに含めるマッピング ファイル内のリソース メタデータを指定できます。 /m オプションを使用する場合、マッピング ファイルには、"[ResourceMetadata]" という行で始まるセクションと、"ResourceDimensions" と "ResourceId" を指定する行が含まれている必要があります。アプリ パッケージに複数の "ResourceDimensions" を含めることもできますが、"ResourceId" は 1 つだけです。

マッピング ファイルの例 (/m オプションを使用):

[ResourceMetadata]
"ResourceDimensions"                    "language-en-us"
"ResourceId"                            "English"

[Files]
"images\en-us\logo.png"                 "en-us\logo.png"
"en-us.pri"                             "resources.pri"

MakeAppx.exe によって実行されるセマンティック検証

MakeAppx.exe は、最も一般的なデプロイ エラーをキャッチし、アプリ パッケージが有効であることを確認するために設計された限定的なセマティック検証を実行します。 MakeAppx.exeの使用中に検証をスキップする場合は、/nv オプションを参照 してください

この検証により、次のことが保証されます。

  • パッケージ マニフェストで参照されるすべてのファイルは、アプリ パッケージに含まれます。
  • アプリケーションに同じキーが 2 つありません。
  • アプリケーションは、SMB、FILE、MS-WWA-WEB、MS-WWA の禁止プロトコルに登録しません。

これは、一般的なエラーをキャッチするように設計されているため、完全なセマンティック検証ではありません。 MakeAppx.exe によってビルドされたパッケージは、インストール可能であるとは限りません。