Создание пакета MSIX или набора с MakeAppx.exeCreate an MSIX package or bundle with MakeAppx.exe

MakeAppx.exe создает пакеты приложений (msix или appx) и наборы пакетов приложений (. msixbundle или. appxbundle).MakeAppx.exe creates both app packages (.msix or .appx) and app package bundles (.msixbundle or .appxbundle). MakeAppx.exe также извлекает файлы из пакета приложения или пакета приложений и шифрует или расшифровывает пакеты приложения и пакеты приложений.MakeAppx.exe also extracts files from an app package or bundle and encrypts or decrypts app packages and bundles. Это средство входит в состав пакета SDK Windows 10 и его можно использовать через командную строку или файл скрипта.This tool is included in the Windows 10 SDK and can be used from a command prompt or a script file.

Сведения об использовании MakeApp.exe для упаковки классического приложения см. в разделе Упаковка приложения для настольных компьютеров вручную.For information about how to use MakeApp.exe to package a desktop app, see Package a desktop app manually.

Важно!

Если для разработки приложения использовали Visual Studio, рекомендуется применять мастер Visual Studio для создания пакета приложения.If you used Visual Studio to develop your app, it's recommended that you use the Visual Studio wizard to create your app package. Дополнительные сведения см. в статьях Упаковка приложения UWP с помощью Visual Studio и упаковка классического приложения из исходного кода с помощью Visual Studio.For more information, see Package a UWP app with Visual Studio and Package a desktop app from source code using Visual Studio.

Важно!

Обратите внимание, что MakeAppx.exe не создает файл отправки пакета приложения (. appxupload или. мсиксуплоад), который является рекомендуемым типом допустимого пакета приложения для отправки в центр партнеров.Note that MakeAppx.exe does not create an app package upload file (.appxupload or .msixupload), which is the recommended type of valid app package for submissions to Partner Center. Файл отправки пакета приложения обычно создается как часть процесса упаковки Visual Studio, хотя его также можно создать вручную.The app package upload file is typically created as part of the Visual Studio packaging process, although it can also be created manually.

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

В зависимости от пути установки пакета SDK MakeAppx.exe может находиться в следующих расположениях на компьютере с Windows 10:Based on your installation path of the SDK, this is where MakeAppx.exe is on your Windows 10 PC:

  • x86: C:\Program Files (x86) \Windows Kits\10\bin \ < номер сборки >\x86\makeappx.exex86: C:\Program Files (x86)\Windows Kits\10\bin\<build number>\x86\makeappx.exe
  • 64-разрядная версия: C:\Program Files (x86) \Windows Kits\10\bin \ < номер сборки >\x64\makeappx.exex64: C:\Program Files (x86)\Windows Kits\10\bin\<build number>\x64\makeappx.exe

Версия ARM этого средства отсутствует.There is no ARM version of this tool.

Синтаксис и параметры MakeAppx.exeMakeAppx.exe syntax and options

Общий синтаксис MakeAppx.exe:General MakeAppx.exe syntax:

MakeAppx <command> [options]      

В следующей таблице описаны команды для MakeAppx.exe.The following table describes the commands for MakeAppx.exe.

КомандаCommand ОписаниеDescription
packpack Создает пакет.Creates a package.
unpackunpack Извлекает все файлы в указанном пакете в указанный выходной каталог.Extracts all files in the specified package to the specified output directory.
bundlebundle Создает пакет приложений.Creates a bundle.
unbundleunbundle Распаковывает все пакеты в подкаталог по указанному выходному пути, названный полным именем пакета.Unpacks all packages to a subdirectory under the specified output path named after the bundle full name.
encryptencrypt Создает зашифрованный пакет приложения или пакет приложений из входного пакета приложения/пакета приложений по указанному выходному пакету приложения/пакету приложений.Creates an encrypted app package or bundle from the input package/bundle at the specified output package/bundle.
расшифровкаdecrypt Создает расшифрованный пакет приложения или пакет приложений из входного пакета приложения/пакета приложений по указанному выходному пакету приложения/пакету приложений.Creates an decrypted app package or bundle from the input app package/bundle at the specified output package/bundle.

Этот список параметров применим ко всем командам:This list of options applies to all commands:

ПараметрOption ОписаниеDescription
/d/d Указывает входные или выходные данные либо каталог содержимого.Specifies the input, output, or content directory.
/l/l Используется для локализованных пакетов.Used for localized packages. Пути проверки по умолчанию для локализованных пакетов.The default validation trips on localized packages. Этот параметр отключает только указанную проверку, не требуя отключения всех проверок.This options disables only that specific validation, without requiring that all validation be disabled.
/kf/kf Шифрует или расшифровывает пакет приложения или пакет приложений с помощью ключа из указанного файла ключа.Encrypts or decrypts the package or bundle using the key from the specified key file. Не может использоваться с /kt.This can't be used with /kt.
/kt/kt Шифрует или расшифровывает пакет приложения или пакет приложений с помощью глобального тестового ключа.Encrypts the or decrypts package or bundle using the global test key. Не может использоваться с /kf.This can't be used with /kf.
/no/no Предотвращает перезапись выходного файла, если он существует.Prevents an overwrite of the output file if it exists. Если не указать этот параметр или параметр /o, пользователь должен подтвердить перезапись файла.If you don't specify this option or the /o option, the user is asked whether they want to overwrite the file.
/nv/nv Пропускает семантическую проверку.Skips semantic validation. Если не указать этот параметр, средство выполняет полную проверку пакета.If you don't specify this option, the tool performs a full validation of the package.
/o/o Перезаписывает выходной файл, если он существует.Overwrites the output file if it exists. Если не указать этот параметр или параметр /no, пользователь должен подтвердить перезапись файла.If you don't specify this option or the /no option, the user is asked whether they want to overwrite the file.
/p/p Указывает пакет приложения или пакет приложений.Specifies the app package or bundle.
/v/v Включает вывод подробных сведений в журнал на консоли.Enables verbose logging output to the console.
/?/? Отображает текст справки.Displays help text.

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

ArgumentArgument ОписаниеDescription
<output package name><output package name> Имя созданного пакета.The name of the package created. Это имя файла с добавлением. msix или. appx.This is the file name appended with .msix or .appx.
<encrypted output package name><encrypted output package name> Имя созданного зашифрованного пакета.The name of the encrypted package created. Это имя файла, к которому добавляется. емсикс или. еаппкс.This is the file name appended with .emsix or .eappx.
<input package name><input package name> Имя пакета.The name of the package. Это имя файла с добавлением. msix или. appx.This is the file name appended with .msix or .appx.
<encrypted input package name><encrypted input package name> Имя зашифрованного пакета.The name of the encrypted package. Это имя файла, к которому добавляется. емсикс или. еаппкс.This is the file name appended with .emsix or .eappx.
<output bundle name><output bundle name> Имя созданного пакета приложений.The name of the bundle created. Это имя файла, к которому добавляется. msixbundle или. appxbundle.This is the file name appended with .msixbundle or .appxbundle.
<encrypted output bundle name><encrypted output bundle name> Имя созданного зашифрованного пакета приложений.The name of the encrypted bundle created. Это имя файла, к которому добавляется. емсиксбундле или. еаппксбундле.This is the file name appended with .emsixbundle or .eappxbundle.
<input bundle name><input bundle name> Имя пакета приложений.The name of the bundle. Это имя файла, к которому добавляется. msixbundle или. appxbundle.This is the file name appended with .msixbundle or .appxbundle.
<encrypted input bundle name><encrypted input bundle name> Имя зашифрованного пакета приложений.The name of the encrypted bundle. Это имя файла, к которому добавляется. емсиксбундле или. еаппксбундле.This is the file name appended with .emsixbundle or .eappxbundle.
<content directory><content directory> Путь для содержимого пакета приложения или пакета приложений.Path for the app package or bundle content.
<mapping file><mapping file> Имя файла, в котором указаны источник и назначение пакета.File name that specifies the package source and destination.
<output directory><output directory> Путь к каталогу для выходных пакетов приложения и пакетов приложений.Path to the directory for output packages and bundles.
<key file><key file> Имя файла, содержащего ключ для шифрования или расшифровки.Name of the file containing a key for encryption or decryption.
<algorithm ID><algorithm ID> Алгоритмы, используемые при создании сопоставления блоков.Algorithms used when creating a block map. Допустимые алгоритмы: SHA256 (по умолчанию), SHA384, SHA512.Valid algorithms include: SHA256 (default), SHA384, SHA512.

Создание пакета приложенияCreate an app package

Пакет приложения — это полный набор файлов приложения, упакованных в файл пакета msix или Appx.An app package is a complete set of the app's files packaged in to a .msix or .appx package file. Чтобы создать пакет приложения с помощью команды pack, необходимо предоставить каталог содержимого или файл сопоставления для расположения пакета.To create an app package using the pack command, you must provide either a content directory or a mapping file for the location of the package. Вы также можете зашифровать пакет во время создания.You can also encrypt a package while creating it. Если вам требуется зашифровать пакет, необходимо использовать параметр /ep и указать, используете ли вы файл ключа (/kf) или глобальный тестовый ключ (/kt).If you want to encrypt the package, you must use /ep and specify if you are using a key file (/kf) or the global test key (/kt). Подробнее о создании зашифрованного пакета см. в разделе Шифрование и расшифровка пакета приложения или пакета приложений.For more information on creating an encrypted package, see Encrypt or decrypt a package or bundle.

Параметры, относящиеся к команде pack:Options specific to the pack command:

ПараметрOption ОписаниеDescription
/f/f Указывает файл сопоставления.Specifies the mapping file.
/h/h Указывает хэш-алгоритм, используемый при создании сопоставления блоков.Specifies the hash algorithm to use when creating the block map. Этот параметр можно использовать только с командой pack.This can only be used with the pack command. Допустимые алгоритмы: SHA256 (по умолчанию), SHA384, SHA512.Valid algorithms include: SHA256 (default), SHA384, SHA512.
/m/m Указывает путь к входному манифесту приложения, на основе которого будет создан выходной пакет приложения или манифест пакета ресурсов.Specifies the path to an input app manifest which will be used as the basis for generating the output app package or resource package's manifest. При использовании этого параметра необходимо также использовать параметр /f и включить раздел [ResourceMetadata] в файл сопоставления, чтобы указать размеры ресурсов, которые будут включены в созданный манифест.When you use this option, you must also use /f and include a [ResourceMetadata] section in the mapping file to specify the resource dimensions to be included in the generated manifest.
/nc/nc Предотвращает сжатие файлов пакета.Prevents compression of the package files. По умолчанию файлы сжимаются в зависимости от выявленного типа файлов.By default, files are compressed based on detected file type.
/r/r Собирает пакет ресурсов.Builds a resource package. Этот параметр необходимо использовать с параметром /m, а также он предполагает использование параметра /l.This must be used with /m and implies the use of the /l option.

В следующих примерах использования показаны некоторые возможные варианты синтаксиса для команды pack:The following usage examples show some possible syntax options for the pack command:

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:The following shows command line examples for the pack command:

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

Создание пакета приложенийCreate an app bundle

Пакет приложений похож на пакет приложения, но он может сократить размер приложения, скачиваемого пользователями.An app bundle is similar to an app package, but a bundle can reduce the size of the app that users download. Пакеты приложения полезны, к примеру, для ресурсов, связанных с конкретным языком, различных ресурсов с определенным масштабом изображений или ресурсов, которые применяются к конкретным версиям Microsoft DirectX.App bundles are helpful for language-specific assets, varying image-scale assets, or resources that apply to specific versions of Microsoft DirectX, for example. По аналогии с созданием зашифрованного пакета приложения, вы также можете зашифровать пакет приложений при его сборке.Similar to creating an encrypted app package, you can also encrypt the app bundle while bundling it. Чтобы зашифровать пакет приложений, используйте параметр /ep и укажите, используете ли вы файл ключа (/kf) или глобальный тестовый ключ (/kt).To encrypt the app bundle, use the /ep option and specify if you are using a key file (/kf) or the global test key (/kt). Подробнее о создании зашифрованного пакета приложений см. в разделе Шифрование и расшифровка пакета приложения или пакета приложений.For more information on creating an encrypted bundle, see Encrypt or decrypt a package or bundle.

Параметры, относящиеся к команде bundle:Options specific to the bundle command:

ПараметрOption ОписаниеDescription
/bv/bv Указывает номер версии пакета.Specifies the version number of the bundle. Номер версии должен состоять из четырех частей, разделенных точками, в следующей форме: <Основная версия>.<Вспомогательная версия>.<Сборка>.<Редакция>.The version number must be in four parts separated by periods in the form: <Major>.<Minor>.<Build>.<Revision>.
/f/f Указывает файл сопоставления.Specifies the mapping file.

Обратите внимание, что если версия пакета не указана или указана в виде "0.0.0.0", пакет создается с использованием текущих даты и времени.Note that if the bundle version is not specified or if it is set to "0.0.0.0" the bundle is created using the current date-time.

В следующих примерах использования показаны некоторые возможные варианты синтаксиса для команды bundle:The following usage examples show some possible syntax options for the bundle command:

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:The following block contains examples for the bundle command:

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

Извлечение файлов из пакета приложения или пакета приложенийExtract files from a package or bundle

Помимо упаковки приложений в пакеты приложения или пакеты приложений, MakeAppx.exe также может распаковывать существующие пакеты.In addition to packaging and bundling apps, MakeAppx.exe can also unpack or unbundle existing packages. Вам потребуется предоставить каталог содержимого в качестве назначения для извлеченных файлов.You must provide the content directory as a destination for the extracted files. При попытке извлечь файлы из зашифрованного пакета приложения или пакета приложений вы можете расшифровать и извлечь файлы одновременно с помощью параметра /ep. При этом необходимо указать способ расшифровки: с помощью файла ключа (/kf) или глобального тестового ключа (/kt).If you are trying to extract files from an encrypted package or bundle, you can decrypt and extract the files at the same time using the /ep option and specifying whether it should be decrypted using a key file (/kf) or the global test key (/kt). Подробнее о расшифровке пакета приложения или пакета приложений см. в разделе Шифрование и расшифровка пакета приложения или пакета приложений.For more information on decrypting a package or bundle, see Encrypt or decrypt a package or bundle.

Параметры, относящиеся к командам unpack и unbundle:Options specific to unpack and unbundle commands:

ПараметрOption ОписаниеDescription
/nd/nd Не выполняет расшифровку при распаковке пакета приложения или пакета приложений.Does not perform decryption when unpacking or unbundling the package/bundle.
/pfn/pfn Распаковывает все файлы в подкаталог по указанному выходному пути, названный полным именем пакета приложения или пакета приложенийUnpacks/unbundles all files to a subdirectory under the specified output path, named after the package or bundle full name

В следующих примерах использования показаны некоторые возможные варианты синтаксиса для команд unpack и unbundle:The following usage examples show some possible syntax options for the unpack and unbundle commands:

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:The following block contains examples for using the unpack and unbundle commands:

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

Шифрование и расшифровка пакета приложения или пакета приложенийEncrypt or decrypt a package or bundle

Средство MakeAppx.exe также может зашифровать или расшифровать существующий пакет приложения или пакет приложений.The MakeAppx.exe tool can also encrypt or decrypt an existing package or bundle. Просто укажите имя пакета, имя выходного пакета, а также способ шифрования или расшифровки: с помощью файла ключа (/kf) или глобального тестового ключа (/kt).You must simply provide the package name, the output package name, and whether encryption or decryption should use a key file (/kf) or the global test key (/kt).

Шифрование и расшифровку нельзя выполнить через мастер упаковки Visual Studio.Encryption and decryption are not available through the Visual Studio packaging wizard.

Параметры, относящиеся к командам encrypt и decrypt:Options specific to encrypt and decrypt commands:

ПараметрOption ОписаниеDescription
/ep/ep Указывает зашифрованный пакет приложения или пакет приложений.Specifies an encrypted app package or bundle.

В следующих примерах использования показаны некоторые возможные варианты синтаксиса для команд encrypt и decrypt:The following usage examples show some possible syntax options for the encrypt and decrypt commands:

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

Следующий блок содержит примеры использования команд encrypt и decrypt:The following block contains examples for using the encrypt and decrypt commands:

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

Файлы ключейKey files

Файлы ключей должны начинаться строкой, содержащей строку "[Keys]", за которой следуют строки с описанием ключей, используемых для шифрования каждого пакета.Key files must begin with a line containing the string "[Keys]" followed by lines describing the keys to encrypt each package with. Каждый ключ представлен парой строк в кавычках, разделенных пробелами или табуляцией.Each key is represented by a pair of strings in quotation marks, separated by either spaces or tabs. Первая строка представляет собой идентификатор 32-байтового ключа в кодировке base64, а вторая — 32-байтовый ключ шифрования в кодировке base64.The first string represents the base64 encoded 32-byte key ID and the second represents the base64 encoded 32-byte encryption key. Файл ключа должен быть простым текстовым файлом.A key file should be a simple text file.

Пример файла ключа:Example of a key file:

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

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

Файлы сопоставления должны начинаться строкой, содержащей строку "[Files]", за которой следуют строки с описанием файлов, которые будут добавлены в пакет.Mapping files must begin with a line containing the string "[Files]" followed by lines describing the files to add to the package. Каждый файл описывается парой путей в кавычках, разделенных пробелами или табуляцией.Each file is described by a pair of paths in quotation marks, separated by either spaces or tabs. Каждый файл представляет свой источник (на диске) и назначение (в пакете).Each file represents its source (on disk) and destination (in the package). Файл сопоставления должен быть простым текстовым файлом.A mapping file should be a simple text file.

Пример файла сопоставления (без параметра /m):Example of a mapping file (without the /m option):

[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.When using a mapping file, you can choose whether you would like to use the /m option. Параметр /m позволяет пользователю указывать метаданные ресурса в файле сопоставления, которые будут включены в созданный манифест.The /m option allows the user to specify the resource metadata in the mapping file to be included in the generated manifest. Если вы используете параметр /m, файл сопоставления должен содержать раздел, начинающийся строкой "[ResourceMetadata]", за которой следуют строки с указанием "ResourceDimensions" и "ResourceId."If you use the /m option, the mapping file must contain a section that begins with the line "[ResourceMetadata]", followed by lines that specify "ResourceDimensions" and "ResourceId." Пакет приложения может содержать несколько "ResourceDimensions", но всегда только один "ResourceId".It is possible for an app package to contain multiple "ResourceDimensions", but there can only ever be one "ResourceId."

Пример файла сопоставления (с параметром /m):Example of a mapping file (with the /m option):

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

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

Выполнение семантической проверки средством MakeAppx.exeSemantic validation performed by MakeAppx.exe

MakeAppx.exe выполняет ограниченную семантическую проверку, которая предназначена для выявления наиболее распространенных ошибок разработки и помогает обеспечить допустимость пакета приложения.MakeAppx.exe performs limited sematic validation that is designed to catch the most common deployment errors and help ensure that the app package is valid. Если вам требуется пропустить проверку при использовании MakeAppx.exe, см. параметр /nv.See the /nv option if you want to skip validation while using MakeAppx.exe.

Эта проверка гарантирует следующее:This validation ensures that:

  • все файлы, ссылки на которые присутствуют в манифесте пакета, входят в состав пакета приложения;All files referenced in the package manifest are included in the app package.
  • в приложении нет двух идентичных ключей;An application does not have two identical keys.
  • приложение не регистрирует запрещенный протокол из этого списка: SMB, FILE, MS-WWA-WEB, MS-WWA.An application does not register for a forbidden protocol from this list: SMB, FILE, MS-WWA-WEB, MS-WWA.

Это не полноценная семантическая проверка, так как она позволяет выявлять только распространенные ошибки.This is not a complete semantic validation as it is only designed to catch common errors. Готовность к установке пакетов, созданных с помощью MakeAppx.exe, не гарантируется.Packages built by MakeAppx.exe are not guaranteed to be installable.