Создание пакета или пакета MSIX с помощью MakeAppx.exe

MakeAppx.exe создает пакеты приложений (MSIX или APPX) и пакеты пакетов приложений (.msixbundle или .appxbundle). MakeAppx.exe также извлекает файлы из пакета приложения или пакета и шифрует или расшифровывает пакеты и пакеты приложений. Это средство входит в состав пакета SDK Windows 10 и его можно использовать через командную строку или файл скрипта.

Сведения об использовании MakeApp.exe для упаковки классического приложения см. в разделе "Упаковка классического приложения" вручную.

Важно!

Если вы использовали Visual Studio для разработки приложения, рекомендуется использовать мастер Visual Studio для создания пакета приложения. Дополнительные сведения см. в разделе "Упаковка приложения UWP" с помощью Visual Studio и упаковки классического приложения из исходного кода с помощью Visual Studio.

Важно!

Обратите внимание, что MakeAppx.exe не создает файл отправки пакета приложения (.appxupload или MSixupload), который является рекомендуемым типом допустимого пакета приложения для отправки в Центр партнеров. Файл отправки пакета приложения обычно создается как часть процесса упаковки Visual Studio, хотя его также можно создать вручную.

Использование MakeAppx.exe

На основе пути установки пакета SDK это место, где MakeAppx.exe находится на компьютере с Windows 10:

  • C:\Program Files (x86)\Windows Kits\10\bin\build number>\<<architecture>\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.

Command Description
пакет… Создает пакет.
unpack Извлекает все файлы в указанном пакете в указанный выходной каталог.
не Создает пакет.
unbundle Распаковка всех пакетов в подкаталог по указанному выходному пути с именем пакета или полного имени пакета.
шифрование Создает зашифрованный пакет приложения или пакет из входного пакета или пакета в указанном выходном пакете или пакете.
decrypt Создает расшифрованный пакет приложения или пакет из входного пакета или пакета приложения по указанному выходному пакету или пакету.

Этот список параметров применяется ко всем командам:

Вариант Description
/d Указывает входной, выходной или контентный каталог.
/l Используется для локализованных пакетов. По умолчанию выполняется проверка локализованных пакетов. Эти параметры отключают только определенную проверку, не требуя отключения всех проверок.
/Kf Шифрует или расшифровывает пакет или пакет с помощью ключа из указанного файла ключа. Это нельзя использовать с /kt.
/Кт Шифрует пакет или пакет расшифровывается с помощью глобального ключа теста. Это нельзя использовать с /kf.
/Нет Запрещает перезапись выходного файла, если он существует. Если этот параметр не указан или параметр /o, пользователю будет предложено перезаписать файл.
/Nv Пропускает семантику проверки. Если этот параметр не указан, средство выполняет полную проверку пакета.
/o Перезаписывает выходной файл, если он существует. Если этот параметр не указан или параметр /no, пользователю будет предложено перезаписать файл.
/p Указывает пакет или пакет приложения.
/v Включает подробные выходные данные ведения журнала в консоли.
/? Отображает текст справки.

Следующий список содержит возможные аргументы:

Argument Description
<имя выходного пакета> Имя созданного пакета. Это имя файла, добавленное с помощью MSIX или APPX.
<Имя зашифрованного выходного пакета> Имя созданного зашифрованного пакета. Это имя файла, добавленное с помощью EMSIX или EAPPX.
<имя входного пакета> Имя пакета. Это имя файла, добавленное с помощью MSIX или APPX.
<имя зашифрованного входного пакета> Имя зашифрованного пакета. Это имя файла, добавленное с помощью EMSIX или EAPPX.
<Имя выходного пакета> Имя созданного пакета. Это имя файла, добавленное с .msixbundle или .appxbundle.
<Имя зашифрованного выходного пакета> Имя созданного зашифрованного пакета. Это имя файла, добавленное с .emsixbundle или eappxbundle.
<имя входного пакета> Имя пакета. Это имя файла, добавленное с .msixbundle или .appxbundle.
<Зашифрованное имя пакета входных данных> Имя зашифрованного пакета. Это имя файла, добавленное с .emsixbundle или eappxbundle.
<каталог содержимого> Путь к содержимому пакета приложения или пакета.
<Файл сопоставления> Имя файла, указывающее источник и назначение пакета.
<выходной каталог> Путь к каталогу для выходных пакетов и пакетов.
<файл ключа> Имя файла, содержащего ключ для шифрования или расшифровки.
<Идентификатор алгоритма> Алгоритмы, используемые при создании карты блоков. Допустимые алгоритмы: SHA256 (по умолчанию), SHA384, SHA512.

Создание пакета приложения

Пакет приложения — это полный набор файлов приложения, упакованных в файл пакета MSIX или APPX. Чтобы создать пакет приложения с помощью команды пакета , необходимо указать каталог содержимого или файл сопоставления для расположения пакета. Вы также можете зашифровать пакет при его создании. Если вы хотите зашифровать пакет, необходимо использовать /ep и указать, используется ли файл ключа (/kf) или глобальный ключ теста (/kt). Дополнительные сведения о создании зашифрованного пакета см. в разделе "Шифрование" или расшифровка пакета или пакета.

Параметры, относящиеся к команде пакета :

Вариант Description
/f Указывает файл сопоставления.
/h Задает хэш-алгоритм, используемый при создании карты блоков. Это можно использовать только с командой пакета. Допустимые алгоритмы: SHA256 (по умолчанию), SHA384, SHA512.
/m Указывает путь к входному манифесту приложения, который будет использоваться в качестве основы для создания манифеста выходного приложения или пакета ресурсов. При использовании этого параметра необходимо также использовать /f и включить в файл сопоставления раздел [ResourceMetadata], чтобы указать измерения ресурсов, которые необходимо включить в созданный манифест.
/Nc Предотвращает сжатие файлов пакета. По умолчанию файлы сжимаются на основе обнаруженного типа файла.
/r Создает пакет ресурсов. Это необходимо использовать с /m и подразумевает использование параметра /l.

В следующих примерах использования показаны некоторые возможные варианты синтаксиса для команды пакета :

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

Ниже показаны примеры командной строки для команды пакета :

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). Дополнительные сведения о создании зашифрованного пакета см. в разделе "Шифрование" или расшифровка пакета или пакета.

Параметры, относящиеся к команде пакета :

Вариант Description
/Bv Указывает номер версии пакета. Номер версии должен находиться в четырех частях, разделенных периодами в форме: <Основной>.<Незначительный>.<Сборка>.<Редакция>.
/f Указывает файл сопоставления.

Обратите внимание, что если версия пакета не указана или задано значение 0.0.0.0, пакет создается с использованием текущей даты и времени.

В следующих примерах использования показаны некоторые возможные варианты синтаксиса для команды пакета :

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

Следующий блок содержит примеры для команды пакета :

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). Дополнительные сведения о расшифровке пакета или пакета см. в разделе "Шифрование" или расшифровка пакета или пакета.

Параметры, относящиеся к распаковке и отмене пакетов команд:

Вариант Description
/Nd Не выполняет расшифровку при распаковке или отмене распаковки пакета или пакета.
/Pfn Распаковка или распаковка всех файлов в подкаталог по указанному выходному пути, именуемого после полного имени пакета или пакета

В следующих примерах использования показаны некоторые возможные варианты синтаксиса для команд распаковки и распаковки :

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

Следующий блок содержит примеры использования команд распаковки и распаковки:

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.

Параметры, относящиеся к шифрованию и расшифровке команд:

Вариант Description
/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

Файлы ключей

Файлы ключей должны начинаться со строки, содержащей строку "[Ключи]" и строки, описывающие ключи для шифрования каждого пакета. Каждый ключ представлен парой строк в кавычках, разделенными пробелами или вкладками. Первая строка представляет идентификатор ключа 32-байтов в кодировке Base64, а второй — ключ шифрования 32-байтов. Файл ключа должен быть простым текстовым файлом.

Пример файла ключа:

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

Файлы сопоставления

Файлы сопоставления должны начинаться со строки, содержащей строку "[Файлы]" и строки, описывающие файлы, добавляемые в пакет. Каждый файл описывается парой путей в кавычках, разделенных пробелами или вкладками. Каждый файл представляет источник (на диске) и назначение (в пакете). Файл сопоставления должен быть простым текстовым файлом.

Пример файла сопоставления (без параметра /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".

Пример файла сопоставления (с параметром /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 выполняет ограниченную проверку sematic, которая предназначена для перехвата наиболее распространенных ошибок развертывания и помогает убедиться, что пакет приложения действителен. См. параметр /nv, если вы хотите пропустить проверку при использовании MakeAppx.exe.

Эта проверка гарантирует, что:

  • Все файлы, на которые ссылается манифест пакета, включаются в пакет приложения.
  • Приложение не имеет двух одинаковых ключей.
  • Приложение не регистрирует запрещенный протокол из этого списка: S МБ, FILE, MS-WWA-WEB, MS-WWA.

Это не полная семантическая проверка, так как она предназначена только для перехвата распространенных ошибок. Пакеты, созданные MakeAppx.exe , не гарантируют установку.