Build App Package For Mac

-->

MakeAppx.exe creates both app packages (.msix or .appx) and app package bundles (.msixbundle or .appxbundle). MakeAppx.exe also extracts files from an app package or bundle and encrypts or decrypts app packages and bundles. This tool is included in the Windows 10 SDK and can be used from a command prompt or a script file.

For information about how to use MakeApp.exe to package a desktop app, see Package a desktop app manually.

Build App Package For Mac

Important

If you used Visual Studio to develop your app, it's recommended that you use the Visual Studio wizard to create your app package. For more information, see Package a UWP app with Visual Studio and Package a desktop app from source code using Visual Studio.

Mar 24, 2020  Find the appropriate download link in the upgrade instructions for each macOS version: macOS Catalina, macOS Mojave or macOS High Sierra Installers for each of these macOS versions download directly to your Applications folder as an app named Install macOS Catalina, Install macOS Mojave or Install macOS High Sierra. Contains R 4.0.0 framework, R.app GUI 1.72 in 64-bit for Intel Macs, Tcl/Tk 8.6.6 X11 libraries and Texinfo 6.7. The latter two components are optional and can be ommitted when choosing 'custom install', they are only needed if you want to use the tcltk R package or build package documentation from sources.

Important

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. The app package upload file is typically created as part of the Visual Studio packaging process, although it can also be created manually.

Using MakeAppx.exe

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 Kits10bin<build number>x86makeappx.exe
  • x64: C:Program Files (x86)Windows Kits10bin<build number>x64makeappx.exe

There is no ARM version of this tool.

MakeAppx.exe syntax and options

General MakeAppx.exe syntax:

The following table describes the commands for MakeAppx.exe.

CommandDescription
packCreates a package.
unpackExtracts all files in the specified package to the specified output directory.
bundleCreates a bundle.
unbundleUnpacks all packages to a subdirectory under the specified output path named after the bundle full name.
encryptCreates an encrypted app package or bundle from the input package/bundle at the specified output package/bundle.
decryptCreates 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:

OptionDescription
/dSpecifies the input, output, or content directory.
/lUsed for localized packages. The default validation trips on localized packages. This options disables only that specific validation, without requiring that all validation be disabled.
/kfEncrypts or decrypts the package or bundle using the key from the specified key file. This can't be used with /kt.
/ktEncrypts the or decrypts package or bundle using the global test key. This can't be used with /kf.
/noPrevents an overwrite of the output file if it exists. If you don't specify this option or the /o option, the user is asked whether they want to overwrite the file.
/nvSkips semantic validation. If you don't specify this option, the tool performs a full validation of the package.
/oOverwrites the output file if it exists. If you don't specify this option or the /no option, the user is asked whether they want to overwrite the file.
/pSpecifies the app package or bundle.
/vEnables verbose logging output to the console.
/?Displays help text.

The following list contains possible arguments:

ArgumentDescription
<output package name>The name of the package created. This is the file name appended with .msix or .appx.
<encrypted output package name>The name of the encrypted package created. This is the file name appended with .emsix or .eappx.
<input package name>The name of the package. This is the file name appended with .msix or .appx.
<encrypted input package name>The name of the encrypted package. This is the file name appended with .emsix or .eappx.
<output bundle name>The name of the bundle created. This is the file name appended with .msixbundle or .appxbundle.
<encrypted output bundle name>The name of the encrypted bundle created. This is the file name appended with .emsixbundle or .eappxbundle.
<input bundle name>The name of the bundle. This is the file name appended with .msixbundle or .appxbundle.
<encrypted input bundle name>The name of the encrypted bundle. This is the file name appended with .emsixbundle or .eappxbundle.
<content directory>Path for the app package or bundle content.
<mapping file>File name that specifies the package source and destination.
<output directory>Path to the directory for output packages and bundles.
<key file>Name of the file containing a key for encryption or decryption.
<algorithm ID>Algorithms used when creating a block map. Valid algorithms include: SHA256 (default), SHA384, SHA512.

Create an app package

An app package is a complete set of the app's files packaged in to a .msix or .appx package file. 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. 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.

Options specific to the pack command:

OptionDescription
/fSpecifies the mapping file.
/hSpecifies the hash algorithm to use when creating the block map. This can only be used with the pack command. Valid algorithms include: SHA256 (default), SHA384, SHA512.
/mSpecifies 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. 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.
/ncPrevents compression of the package files. By default, files are compressed based on detected file type.
/rBuilds a resource package. This must be used with /m and implies the use of the /l option.

The following usage examples show some possible syntax options for the pack command:

The following shows command line examples for the pack command:

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. 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. 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.

Options specific to the bundle command:

OptionDescription
/bvSpecifies the version number of the bundle. The version number must be in four parts separated by periods in the form: <Major>.<Minor>.<Build>.<Revision>.
/fSpecifies the mapping file.
Build App Package For Mac

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.

The following usage examples show some possible syntax options for the bundle command:

The following block contains examples for the bundle command:

Extract files from a package or bundle

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. 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.

Options specific to unpack and unbundle commands:

Build App Package For Mac Pro

OptionDescription
/ndDoes not perform decryption when unpacking or unbundling the package/bundle.
/pfnUnpacks/unbundles all files to a subdirectory under the specified output path, named after the package or bundle full name

The following usage examples show some possible syntax options for the unpack and unbundle commands:

The following block contains examples for using the unpack and unbundle commands:

Encrypt or decrypt a package or bundle

The MakeAppx.exe tool can also encrypt or decrypt an existing package or bundle. 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).

Encryption and decryption are not available through the Visual Studio packaging wizard.

Options specific to encrypt and decrypt commands:

OptionDescription
/epSpecifies an encrypted app package or bundle.

The following usage examples show some possible syntax options for the encrypt and decrypt commands:

The following block contains examples for using the encrypt and decrypt commands:

Key files

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. 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:

Best Free Mac Apps

Mapping files

Mac Packages App

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.

Example of a mapping file (without the /m option):

When using a mapping file, you can choose whether you would like to use the /m option. The /m option allows the user to specify the resource metadata in the mapping file to be included in the generated manifest. 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.' It is possible for an app package to contain multiple 'ResourceDimensions', but there can only ever be one 'ResourceId.'

Example of a mapping file (with the /m option):

Semantic validation performed by MakeAppx.exe

Build App Package For Mac

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. See the /nv option if you want to skip validation while using MakeAppx.exe.

Build App For Mac

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.
  • An application does not register for a forbidden protocol from this list: SMB, FILE, MS-WWA-WEB, MS-WWA.

Build App Package For Mac Free

This is not a complete semantic validation as it is only designed to catch common errors. Packages built by MakeAppx.exe are not guaranteed to be installable.