Поделиться через


Упаковщик приложений (MakeAppx.exe)

Примечание.

Инструкции по использованию этого инструмента см. в разделе "Создание пакета приложения" с помощью средства MakeAppx.exe.

 

Упаковщик приложений (MakeAppx.exe) создает пакет приложения из файлов на диске или извлекает файлы из пакета приложения на диск. Начиная с Windows 8.1 пакет пакета приложений также создает пакет пакетов приложений из пакетов приложений на диске или извлекает пакеты приложений из пакета приложения на диск. Он включается в Microsoft Visual Studio и пакет SDK для Windows 8 или пакета SDK для Windows 8 или Windows Software Development Kit (SDK) для Windows 8.1 и более поздней версии. Посетите страницу загрузки для разработчиков , чтобы получить их.

Средство MakeAppx.exe обычно находится в определенных расположениях версии операционной системы:

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

Где <архитектура> = x86, x64, arm, ar64 или chpe. Кроме того, он может находиться в:

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

Использование пакета приложений

Примечание.

Относительные пути поддерживаются во всем инструменте.

 

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

Поместите AppxManifest.xml в корневой каталог, содержащий все полезные файлы приложения. Идентичная структура каталогов создается для пакета приложения и будет доступна при извлечении пакета во время развертывания.

  1. Поместите все файлы в одну структуру каталогов, создайте подкаталоги по мере необходимости.

  2. Создайте допустимый манифест пакета, AppxManifest.xml и поместите его в корневой каталог.

  3. Выполните следующую команду:

    Пакет MakeAppx /d input_directorypath /p filepath.appx

Создание пакета с помощью файла сопоставления

  1. Создайте допустимый манифест пакета AppxManifest.xml.

  2. Создайте файл сопоставления. Первая строка содержит строку [Файлы], а строки, которые следуют указаниям пути источника (диска) и назначения (пакета) в кавычках.

    [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 /f mapping_filepath /p filepath.appx

Подписыв пакет с помощью SignTool

  1. Создайте сертификат. Издатель, указанный в манифесте, должен соответствовать сведениям субъекта издателя сертификата подписи. Дополнительные сведения о создании сертификата подписи см. в статье "Создание сертификата подписи пакета приложения".

  2. Выполните SignTool.exe, чтобы подписать пакет:

    Знак SignTool /a /v /fd hashAlgorithm /fcertFileName filepath.appx

    ХэшAlgorithm должен соответствовать хэш-алгоритму, используемому для создания блочной карты при упаковке приложения. С помощью программы упаковки MakeAppx алгоритм хэш-хэша Appx по умолчанию — SHA256. Запустите SignTool.exe укажите SHA256 в качестве алгоритма дайджеста файла (/fd):

    Знак SignTool /a /v /fd SHA256 /fcertFileName filepath.appx

    Дополнительные сведения о подписи пакетов см. в разделе "Как подписать пакет приложения с помощью SignTool".

Извлечение файлов из пакета

  1. Выполните следующую команду:

    MakeAppx распаковывать /p-файл.appx /d output_directory

  2. Распакованный пакет имеет ту же структуру, что и установленный пакет.

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

Мы используем команду пакета для создания пакета приложений с <именем> выходного пакета, добавив все пакеты из <каталога> содержимого (включая вложенные папки). Если <каталог> содержимого содержит манифест пакета, AppxBundleManifest.xml, он игнорируется.

  1. Поместите все пакеты в одну структуру каталогов, создавая подкаталоги по мере необходимости.

  2. Выполните следующую команду:

    Пакет MakeAppx /d input_directorypath /p filepath.appxbundle

Создание пакета с помощью файла сопоставления

Мы используем команду пакета для создания пакета приложений с <именем> выходного пакета, добавив все пакеты из списка пакетов в <файле> сопоставления. Если <файл> сопоставления содержит манифест пакета, AppxBundleManifest.xml, он игнорируется.

  1. <Создайте файл> сопоставления. Первая строка содержит строку [Файлы], а строки, которые следуют указаниям пакетов для добавления в пакет. Каждый пакет описывается парой путей в кавычках, разделенных пробелами или вкладками. Пара путей представляет источник пакета (на диске) и назначение (в пакете). Все имена целевых пакетов должны иметь расширение .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 /f mapping_filepath /p filepath.appxbundle

Извлечение пакетов из пакета

  1. Выполните следующую команду:

    MakeAppx unbundle /p bundle_name.appxbundle /d output_directory

  2. Распакованный пакет имеет ту же структуру, что и установленный пакет пакетов.

Шифрование пакета с помощью файла ключа

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

        [Keys]
        "0"                 "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
    
  2. Выполните следующую команду:

    MakeAppx.exe шифровать /p package_name.appx /ep encrypted_package_name.eappx /kf keyfile_name.txt

  3. Входной пакет будет зашифрован в указанный зашифрованный пакет с помощью предоставленного файла ключа.

Шифрование пакета с помощью глобального ключа теста

  1. Выполните следующую команду:

    MakeAppx.exe шифрования /p package_name.appx /ep encrypted_package_name.eappx /kt

  2. Входной пакет будет зашифрован в указанный зашифрованный пакет с помощью глобального ключа теста.

Расшифровка пакета с помощью файла ключа

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

        [Keys]
        "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="                 "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
    
  2. Выполните следующую команду:

    MakeAppx.exe расшифровать /p package_name.appx /ep unencrypted_package_name.eappx /kf keyfile_name.txt

  3. Входной пакет будет расшифровывается в указанный незашифрованный пакет с помощью предоставленного файла ключа.

Расшифровка пакета с помощью глобального ключа теста

  1. Выполните следующую команду:

    MakeAppx.exe расшифровать /p package_name.appx /ep unencrypted_package_name.eappx /kt

  2. Входной пакет будет расшифровывается в указанный незашифрованный пакет с помощью глобального ключа теста.

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

Аргумент командной строки /p всегда является обязательным с параметром /d, /f или /ep. Обратите внимание, что /d, /f и /ep являются взаимоисключающими.

Пакет MakeAppx [параметры] /p <output package name> /d <content directory>

Пакет MakeAppx [параметры] /p <output package name> /f <mapping file>

MakeAppx распаковка [параметры] /p< input package name> /d< output directory >

Пакет MakeAppx [параметры] /p <output bundle name> /d <content directory>

Пакет MakeAppx [параметры] /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 [параметры] /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, распаковке MakeAppx, пакету MakeAppx, unbundle, MakeAppx encrypt или Расшифровке MakeAppx.

/l

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

/o

Перезаписать выходной файл, если он существует. Если этот параметр не указан или параметр /no , пользователю будет предложено перезаписать файл.

Этот параметр нельзя использовать с /no.

/Нет

Запрещает перезапись выходного файла, если он существует. Если этот параметр не указан или параметр /o , пользователю будет предложено перезаписать файл.

Этот параметр нельзя использовать с /o.

/nv

Пропустить семантику проверки. Если этот параметр не указан, средство выполняет полную проверку пакета.

/v

Включите подробные выходные данные ведения журнала в консоль.

/?

Отображение текста справки.

Пакет MakeAppx, Распаковка MakeAppx, пакет MakeAppx, unbundle, MakeAppx encrypt и MakeAppx расшифровка являются взаимоисключающими командами. Ниже приведены параметры командной строки, которые применяются специально к каждой команде:

Пакет MakeAppx [h]

Создает пакет.

Алгоритм /h

Задает хэш-алгоритм, используемый при создании карты блоков. Ниже приведены допустимые значения алгоритма:

SHA256 (по умолчанию)
SHA384
SHA512

Этот параметр нельзя использовать с командой распаковки .

MakeAppx распаковка [pfn]

Извлекает все файлы в указанном пакете в указанный выходной каталог. Выходные данные имеют ту же структуру каталогов, что и пакет.

/pfn

Указывает каталог с полным именем пакета. Этот каталог создается в указанном выходном расположении. Этот параметр нельзя использовать с командой пакета .

MakeAppx unbundle [pfn]

Распаковка всех пакетов в подкаталог по указанному выходному пути с именем полного имени пакета. Выходные данные имеют ту же структуру каталогов, что и установленный пакет пакетов.

/pfn

Указывает каталог с полным именем пакета. Этот каталог создается в указанном выходном расположении. Этот параметр нельзя использовать с командой пакета .

Шифрование MakeAppx [kf, kt]

Создает зашифрованный пакет приложения из указанного входного пакета приложения в указанном выходном пакете.

Файл ключа /kf <>

Шифрует пакет или пакет с помощью ключа из указанного файла ключа. Этот параметр нельзя использовать с kt.

/Кт

Шифрует пакет или пакет с помощью глобального ключа теста. Этот параметр нельзя использовать с KF.

Расшифровка MakeAppx [kf, kt]

Создает незашифрованный пакет приложения из указанного входного пакета приложения в указанном выходном пакете.

Файл ключа /kf <>

Расшифровывает пакет или пакет с помощью ключа из указанного файла ключей. Этот параметр нельзя использовать с kt.

/Кт

Расшифровывает пакет или пакет с помощью глобального ключа теста. Этот параметр нельзя использовать с KF.

Семантическая проверка, выполняемая MakeAppx

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

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

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

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