アプリ パッケージ ツール (MakeAppx.exe)

Note

このツールの使用に関する UWP のガイダンスについては、「MakeAppx.exe ツールを使用してアプリ パッケージを作成する」を参照してください。

 

アプリ パッケージャー (MakeAppx.exe) は、ディスク上のファイルからアプリ パッケージを作成するか、アプリ パッケージからディスクにファイルを抽出します。 Windows 8.1 以降、アプリ パッケージャーは、ディスク上のアプリ パッケージからアプリ パッケージ バンドルを作成したり、アプリ パッケージ バンドルからディスクにアプリ パッケージを抽出したりすることもできます。 これは、Microsoft Visual Studio と、Windows 8 の Windows ソフトウェア開発キット (SDK) または Windows 8.1 以降の Windows ソフトウェア開発キット (SDK) に含まれています。 開発者向けのダウンロードにアクセスして入手してください。

MakeAppx.exe ツールは、通常、オペレーティング システムのバージョン固有の場所にあります。

  • C:\Program Files (x86)\Windows Kits\10\bin<build number><architecture>\makeappx.exe

ここで、<architecture> = x86、x64、arm、ar64、または chpe。 または、次の場所に配置されている場合があります。

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

アプリ パッケージャーの使用

Note

相対パスは、ツール全体でサポートされています。

 

ディレクトリ構造を使用してパッケージを作成するには

アプリのすべてのペイロード ファイルを含むディレクトリのルートに AppxManifest.xml を配置します。 アプリ パッケージ用に同一のディレクトリ構造が作成され、展開時にパッケージが抽出されるときに使用できるようになります。

  1. すべてのファイルを 1 つのディレクトリ構造に配置し、必要に応じてサブディレクトリを作成します。

  2. 有効なパッケージ マニフェスト AppxManifest.xml を作成し、ルート ディレクトリに配置します。

  3. このコマンドを実行します。

    MakeAppx pack /dinput_directorypath/pfilepath.appx

マッピング ファイルを使用してパッケージを作成するには

  1. 有効なパッケージ マニフェスト AppxManifest.xml を作成します。

  2. マッピング ファイルを作成します。 最初の行には文字列 [Files] が含まれており、次の行で引用符で囲まれた文字列でソース (ディスク) パスと宛先 (パッケージ) パスを指定します。

    [Files]
    "C:\MyApp\StartPage.htm"     "default.html"
    "C:\MyApp\readme.txt"        "doc\readme.txt"
    "\\MyServer\path\icon.png"   "icon.png"
    "MyCustomManifest.xml"       "AppxManifest.xml"
    
  3. このコマンドを実行します。

    MakeAppx pack /fmapping_filepath/pfilepath.appx

SignTool を使ってアプリ パッケージに署名するには

  1. 証明書を作成します。 マニフェストに一覧表示されている発行元は、署名証明書の発行元のサブジェクト情報と一致する必要があります。 署名証明書の作成についての詳細は、「アプリ パッケージ署名証明書を作成する方法」を参照してください。

  2. SignTool.exe を実行してパッケージに署名する:

    SignTool sign /a /v /fdhashAlgorithm/fcertFileNamefilepath.appx

    hashAlgorithm は、アプリがパッケージ化されたときにブロックマップを作成するために使用されるハッシュ アルゴリズムと一致する必要があります。 MakeAppx パッケージ化ユーティリティでは、既定の Appx ブロックマップ ハッシュ アルゴリズムは SHA256 です。 SHA256 を指定して、ファイル ダイジェスト (/fd) アルゴリズムとして SignTool.exe を実行します。

    SignTool sign /a /v /fd SHA256 /fcertFileNamefilepath.appx

    パッケージへの署名についての詳細は、「SignToolを使ってアプリ パッケージに署名する方法」をご覧ください。

パッケージからファイルを抽出するには

  1. このコマンドを実行します。

    MakeAppx unpack /pfile.appx /doutput_directory

  2. 解凍されたパッケージの構造は、インストールされているパッケージと同じです。

ディレクトリ構造を使用してパッケージ バンドルを作成するには

bundle コマンドを使用して、<コンテンツ ディレクトリ> (サブフォルダーを含む) からすべてのパッケージを追加することで、<出力バンドル名>でアプリ バンドルを作成します。 <コンテンツ ディレクトリ>にバンドル マニフェスト (AppxBundleManifest.xml) が含まれている場合は、無視されます。

  1. すべてのパッケージを 1 つのディレクトリ構造に配置し、必要に応じてサブディレクトリを作成します。

  2. このコマンドを実行します。

    MakeAppx bundle /dinput_directorypath/pfilepath.appxbundle

マッピング ファイルを使用してパッケージ バンドルを作成するには

bundle コマンドを使用して、<マッピング ファイル>内のパッケージの一覧からすべてのパッケージを追加することで、<出力バンドル名>でアプリ バンドルを作成します。 <マッピング ファイル>にバンドル マニフェスト (AppxBundleManifest.xml) が含まれている場合は、無視されます。

  1. <マッピング ファイル>を作成します。 最初の行には文字列 [Files] が含まれており、次の行はバンドルに追加するパッケージを指定します。 各パッケージは、引用符で囲まれたパスのペアで、スペースまたはタブで区切られます。 パスのペアは、パッケージのソース (ディスク上) と宛先 (バンドル内) を表します。 すべての宛先パッケージ名には、.appx 拡張子が必要です。

        [Files]
        "C:\MyApp\MyApp_x86.appx"                 "MyApp_x86.appx"
        "C:\Program Files (x86)\ResPack.appx"    "resources\resPack.appx"
        "\\MyServer\path\ResPack.appx"           "Respack.appx"
        "my app files\respack.appx"              "my app files\respack.appx"
    
  2. このコマンドを実行します。

    MakeAppx bundle /fmapping_filepath/pfilepath.appxbundle

バンドルからパッケージを抽出するには

  1. このコマンドを実行します。

    MakeAppx unbundle /pbundle_name.appxbundle /doutput_directory

  2. 解凍されたバンドルの構造は、インストールされているパッケージ バンドルと同じです。

キー ファイルを使用してパッケージを暗号化するには

  1. キー ペアを作成します。 キー ファイルは、文字列「[Keys]」を含む行で始まり、その後にパッケージを暗号化するためのキーを説明する行が続く必要があります。 各キーは、スペースまたはタブで区切られた引用符で囲まれた文字列のペアで記述されます。 最初の文字列はキー ID を表し、2 番目の文字列は 16 進形式の暗号化キーを表します。

        [Keys]
        "0"                 "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
    
  2. このコマンドを実行します。

    MakeAppx.exe encrypt /ppackage_name.appx /epencrypted_package_name.eappx /kfkeyfile_name.txt

  3. 入力パッケージは、提供されたキー ファイルを使用して、指定された暗号化パッケージに暗号化されます。

グローバル テスト キーを使用してパッケージを暗号化するには

  1. このコマンドを実行します。

    MakeAppx.exe encrypt /ppackage_name.appx /epencrypted_package_name.eappx /kt

  2. 入力パッケージは、グローバル テスト キーを使用して、指定された暗号化されたパッケージに暗号化されます。

キー ファイルを使用してパッケージを復号化するには

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

        [Keys]
        "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="                 "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
    
  2. このコマンドを実行します。

    MakeAppx.exe decrypt /ppackage_name.appx /epunencrypted_package_name.eappx /kfkeyfile_name.txt

  3. 入力パッケージは、提供されたキー ファイルを使用して、指定された非暗号化パッケージに復号化されます。

グローバル テスト キーを使用してパッケージを復号化するには

  1. このコマンドを実行します。

    MakeAppx.exe decrypt /ppackage_name.appx /epunencrypted_package_name.eappx /kt

  2. 入力パッケージは、グローバル テスト キーを使用して、指定された暗号化されていないパッケージに復号化されます。

使用方法

コマンド ライン引数 /p は常に必須で、/d/f、または /ep のいずれかです。 /d、/f、および /ep は相互に排他的であることに注意してください。

MakeAppx pack [options]/p<output package name>/d<content directory>

MakeAppx pack [options]/p<output package name>/f<mapping file>

MakeAppx unpack [options]/p<input package name>/d<output directory>

MakeAppx bundle [options]/p<output bundle name>/d<content directory>

MakeAppx bundle [options]/p<output bundle name>/f<mapping file>

MakeAppx unbundle [options]/p<input bundle name>/d<output directory>

MakeAppx encrypt [options]/p<input package name>/ep<output package name>

MakeAppx decrypt [options]/p<input package name>/ep<output package name>

コマンドライン構文

MakeAppx のコマンド ラインの一般的な使用構文を次に示します。

MakeAppx [pack|unpack|bundle|unbundle|encrypt|decrypt] [/h/kf/kt/l/o/no/nv/v/pfn/?]

MakeAppx は、パッケージ内のファイルをパックまたは解凍したり、バンドル内のパッケージをバンドルまたはバンドル解除したり、指定された入力ディレクトリまたはマッピング ファイル内のアプリ パッケージまたはバンドルを暗号化または復号化したりします。 MakeAppx packMakeAppx unpackMakeAppx bundleMakeAppx unbundleMakeAppx encrypt、または MakeAppx decrypt に適用されるパラメーターの一覧を次に示します。

/l

このオプションは、ローカライズされたパッケージに使用されます。 ローカライズされたパッケージのデフォルト検証トリップ。 このオプションは、すべての検証を無効にする必要はなく、特定の検証のみを無効にします。

/o

出力ファイルが存在する場合は上書きします。 このオプションまたは /no オプションを指定しない場合、ユーザーはファイルを上書きするかどうかを尋ねられます。

このオプションと /no を同時に使用することはできません。

/no

出力ファイルが存在する場合は上書きを防止します。 このオプションまたは /o オプションを指定しない場合、ユーザーはファイルを上書きするかどうかを尋ねられます。

このオプションと /o を同時に使用することはできません。

/nv

セマンティック検証をスキップします。 このオプションを指定しない場合、ツールはパッケージの完全な検証を実行します。

/v

コンソールへの詳細ログ出力を有効にします。

/?

ヘルプ テキストを表示します。

MakeAppx packMakeAppx unpackMakeAppx bundleMakeAppx unbundleMakeAppx encrypt、および MakeAppx decrypt は相互に排他的なコマンドです。 各コマンドに特に適用されるコマンド ライン パラメーターを次に示します。

MakeAppx pack [h]

パッケージを作成します。

/halgorithm

ブロック マップの作成時に使用するハッシュ アルゴリズムを指定します。 アルゴリズムの有効な値を次に示します。

SHA256 (既定値)
SHA384
SHA512

このオプションを unpack コマンドで使用することはできません。

MakeAppx unpack [pfn]

指定したパッケージのすべてのファイルを指定した出力ディレクトリに抽出します。 出力のディレクトリ構造はパッケージと同じです。

/pfn

パッケージの完全名で名前が付けられたディレクトリを指定します。 このディレクトリは、指定された出力場所の下に作成されます。 このオプションを pack コマンドで使用することはできません。

MakeAppx unbundle [pfn]

すべてのパッケージを、バンドルの完全名に基づいて名前を付けた、指定された出力パスの下のサブディレクトリに解凍します。 出力は、インストールされたパッケージ バンドルと同じディレクトリ構造になります。

/pfn

パッケージ バンドルの完全名で名前が付けられたディレクトリを指定します。 このディレクトリは、指定された出力場所の下に作成されます。 このオプションを bundle コマンドで使用することはできません。

MakeAppx encrypt [kfkt]

指定された入力アプリ パッケージから、指定された出力パッケージに暗号化されたアプリ パッケージを作成します。

/kf<key file>

指定されたキー ファイルのキーを使用してパッケージまたはバンドルを暗号化します。 このオプションと kt を同時に使用することはできません。

/kt

グローバル テスト キーを使用してパッケージまたはバンドルを暗号化します。 このオプションと kf を同時に使用することはできません。

MakeAppx decrypt [kfkt]

指定された入力アプリ パッケージから、指定された出力パッケージに暗号化されていないアプリ パッケージを作成します。

/kf<key file>

指定されたキー ファイルのキーを使用してパッケージまたはバンドルを復号化します。 このオプションと kt を同時に使用することはできません。

/kt

グローバル テスト キーを使用してパッケージまたはバンドルを復号化します。 このオプションと kf を同時に使用することはできません。

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

MakeAppx は、最も一般的な展開エラーを検出し、アプリ パッケージが有効であることを確認するように設計された限定的なセマンティック検証を実行します。

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

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

このセマンティック検証は完了していないため、MakeAppx によってビルドされたパッケージがインストール可能であることは保証されていません。