Skip to main content

Cross-platform Python library for creating, extracting and signing MSIX packages

Project description

pymsix

Cross-platform Python library for creating, extracting and signing MSIX packages. Wraps makeappx.exe (Windows) or makemsix (Linux) — binaries are resolved automatically.

Requirements

  • Python 3.10+
Platform Requirements
Windows Windows 10 SDK
Linux osslsigncode (for signing)

On Linux, makemsix is bundled with the package and requires no additional setup.

Installation

pip install pymsix

Usage

from msix import MsixPacker

packer = MsixPacker()
packer.pack("path/to/app-content/", "output/MyApp.msix")
packer.unpack("output/MyApp.msix", "path/to/extracted/")

The app-content/ directory must contain a valid AppxManifest.xml.

Signing

packer.sign("output/MyApp.msix", "cert.pfx", pfx_password="s3cr3t")

API

MsixPacker(binary=None, sign_binary=None, verbose=False)

Parameter Description
binary Path to makeappx.exe (Windows) or makemsix (Linux). Auto-resolved if omitted.
sign_binary Path to signtool.exe (Windows) or osslsigncode (Linux). Auto-resolved if omitted.
verbose Print the command being executed.

pack(content_dir, output_package, *, overwrite=True, skip_validation=False, hash_algorithm="SHA256")

Creates an MSIX package from a directory. Returns the path to the created file.

Note: overwrite, skip_validation, and hash_algorithm are only supported on Windows (makeappx.exe). These parameters are silently ignored on Linux, as makemsix does not support them.

unpack(package, output_dir, *, overwrite=True)

Extracts an MSIX package into a directory. Returns the path to the extraction directory.

Note: overwrite is only supported on Windows (makeappx.exe). This parameter is silently ignored on Linux, as makemsix does not support it.

sign(package, pfx, *, pfx_password=None, timestamp_url="http://timestamp.digicert.com", digest_algorithm="SHA256")

Signs an MSIX package in-place using a PFX certificate. Returns the path to the signed file.

On Windows, signtool.exe is used (auto-detected from the Windows SDK). On Linux, osslsigncode must be installed:

# Debian/Ubuntu
sudo apt install osslsigncode

# Fedora/RHEL
sudo dnf install osslsigncode
Parameter Description
package Path to the .msix file to sign.
pfx Path to the .pfx certificate file.
pfx_password Password for the .pfx file. Omit if not password-protected.
timestamp_url RFC 3161 timestamp server URL. Set to "" to disable timestamping.
digest_algorithm Digest algorithm for the signature (default "SHA256").

Binary Resolution Order

Pack binary (makeappx.exe / makemsix)

  1. binary constructor argument
  2. PYMSIX_BINARY environment variable
  3. Windows SDK makeappx.exe (Windows only)
  4. Bundled makemsix binary (Linux only)

Sign binary (signtool.exe / osslsigncode)

  1. sign_binary constructor argument
  2. PYMSIX_SIGN_BINARY environment variable
  3. Windows SDK signtool.exe (Windows only)
  4. osslsigncode on PATH (Linux only)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymsix-1.1.2.tar.gz (47.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymsix-1.1.2-py3-none-any.whl (46.1 kB view details)

Uploaded Python 3

File details

Details for the file pymsix-1.1.2.tar.gz.

File metadata

  • Download URL: pymsix-1.1.2.tar.gz
  • Upload date:
  • Size: 47.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.4

File hashes

Hashes for pymsix-1.1.2.tar.gz
Algorithm Hash digest
SHA256 158e43e10606566d7f4e1d81f1a0cb22380eeb2c8205500e061887901865ae7c
MD5 1c0f5a8f1f96f3e1dd67c62c4919cf2d
BLAKE2b-256 9769cc10c86877278ad7ac939dd7d23f35478ebe3b57d08cfe7e33aa6d942e34

See more details on using hashes here.

File details

Details for the file pymsix-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: pymsix-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 46.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.4

File hashes

Hashes for pymsix-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e3c3859e9ff9c9cec1d6579c1e664bfd1c26b587d7895d41a8b9f8bc6cef18b1
MD5 e4ec7b1c4d53d3f8f19def1980fda5e9
BLAKE2b-256 ac37c7f87cead7a271feb14a9e577edbb921e696a2ad4c4a148ece148f926e55

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page