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

Note

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

 

アプリ パッケージャー (MakeAppx.exe) は、ディスク上のファイルからアプリ パッケージを作成するか、アプリ パッケージからディスクにファイルを抽出します。 Windows 8.1以降、アプリ パッケージャーは、ディスク上のアプリ パッケージからアプリ パッケージ バンドルを作成するか、アプリ パッケージ バンドルからディスクにアプリ パッケージを抽出します。 Microsoft Visual Studio および Windows Software Development Kit (SDK) for Windows 8 または Windows Software Development Kit (SDK) に含まれています (Windows 8.1 以降用)。 開発者がダウンロードを入手するには、「ダウンロード」を参照してください。

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

  • C:\Program Files (x86)\Windows Kits\10\binbuild< numberarchitecture><>\makeappx.exe

Where = 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 です。 ファイル ダイジェスト (/fd) アルゴリズムとして SHA256 を指定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. 次のコマンドを実行します。

    /ppackage_name.appx /epencrypted_package_name.eappx /kfkeyfile_name を暗号化MakeAppx.exe .txt

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

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

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

    /ppackage_name.appx /epencrypted_package_name.eappx /ktを暗号化MakeAppx.exe

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

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

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

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

    /ppackage_name.appx /ep unencrypted_package_name.eappx /kf keyfile_name暗号化を解除MakeAppx.exe.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]/poutput< パッケージ名>/dcontent< ディレクトリ>

MakeAppx pack [options]/poutput< パッケージ名>/fmapping< ファイル>

MakeAppx unpack [options]/pinput<パッケージ名>/doutput< ディレクトリ>

MakeAppx バンドル [options]/poutput< バンドル名>/dcontent< ディレクトリ>

MakeAppx バンドル [options]/poutput< バンドル名>/fmapping< ファイル>

MakeAppx unbundle [options]/pinput<バンドル名>/doutput< ディレクトリ>

MakeAppx encrypt [options]/pinput<パッケージ名>/epoutput< パッケージ名>

MakeAppx decrypt [options]/pinput<パッケージ名>/epoutput< パッケージ名>

コマンドライン構文

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

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

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

/l

このオプションは、ローカライズされたパッケージに使用されます。 既定の検証が、ローカライズされたパッケージで無効になります。 このオプションでは、すべての検証を無効にしなくても、その特定の検証のみが無効になります。

/o

出力ファイルが存在する場合は上書きします。 このオプションまたは /no オプションを指定しない場合、ユーザーはファイルを上書きするかどうかを確認するメッセージが表示されます。

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

/no

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

/ o ではこのオプションを使用できません。

/nv

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

/v

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

/?

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

MakeAppx パックMakeAppx unpackMakeAppx バンドルMakeAppx unbundleMakeAppx encryptMakeAppx 復号化 は相互に排他的なコマンドです。 各コマンドに特に適用されるコマンド ライン パラメーターを次に示します。

MakeAppx パック [h]

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

/halgorithm

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

SHA256 (既定値)
SHA384
SHA512

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

MakeAppx unpack [pfn]

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

/pfn

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

MakeAppx unbundle [pfn]

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

/pfn

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

MakeAppx encrypt [kf, kt]

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

/kfkey<ファイル>

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

/kt

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

MakeAppx 復号化 [kf, kt]

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

/kfkey<ファイル>

指定したキー ファイルのキーを使用して、パッケージまたはバンドルの暗号化を解除します。 kt ではこのオプションを使用できません。

/kt

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

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

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

この検証では、次の点を確認します。

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

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