Windows — MSIX (Microsoft Store / sideloading)
format = "msix" packs the runtime image into a Windows .msix package. The
launchers are packaged as full-trust Win32 apps (runFullTrust), one
<Application> per launcher.
appdist/<target>/dist/<name>-<version>.msix— the package.
Only platform = "windows-x86_64" may use this format.
Build requirements
MSVC C++ build tools (
cl.exe/rc.exe) — to compile the launcher.exe(same as MSI; see its install steps).makeappx (Windows SDK) — located automatically, or set
PYAPPDIST_MAKEAPPXto its path. It is included in the Windows SDK that the MSVC Build Tools install pulls in; standalone, it comes with the Windows SDK installer orwinget install --id Microsoft.WindowsSDK.10.0.26100 -e
No WiX is needed.
Configuration
manufacturerVendor name; used as the launcher’s version-resource company name and as the default publisher (
CN=<manufacturer>; when unset, the appnameis used instead).identity-namePackage Identity Name (for the Store, the reserved
Publisher.AppName). Defaults to[project].name.publisherPackage Identity Publisher DN (e.g.
"CN=Contoso"). For the Store or signing it must match. Defaults toCN=<manufacturer>, orCN=<app name>whenmanufactureris also unset.display-nameApp display name. Defaults to
[tool.pyappdist].name.logoPath to a source
.pngused for the package logos. A placeholder is generated if omitted.
[[tool.pyappdist.targets]]
name = "store"
platform = "windows-x86_64"
format = "msix"
manufacturer = "Example Inc."
# identity-name = "Contoso.MyApp" # from Partner Center for the Store
# publisher = "CN=Contoso"
# display-name = "My App"
# logo = "assets/logo.png"
Signing and install
The package is left unsigned: the Microsoft Store signs it for free on submission (company registration is also free), and auto-updates are handled by the Store.
To test an unsigned .msix locally, enable Developer Mode (Settings → For
developers; one-time, requires admin), then:
Add-AppxPackage -Register <image>\AppxManifest.xml # loose, from the built image
# or: Add-AppxPackage -AllowUnsigned <app>.msix
Without the Store or Developer Mode, an unsigned MSIX cannot be installed (it would
need your own trusted code-signing certificate). For sideloading, the signing
certificate’s subject must match the manifest Publisher.
MSIX is not covered by the MSI code-sign key: the package is signed only
when the PYAPPDIST_SIGN_CMD environment variable is set. The command receives
the artifact’s file name via the {file} token and runs from the artifact’s
directory, exactly as described in Code signing.