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, andhash_algorithmare only supported on Windows (makeappx.exe). These parameters are silently ignored on Linux, asmakemsixdoes not support them.
unpack(package, output_dir, *, overwrite=True)
Extracts an MSIX package into a directory. Returns the path to the extraction directory.
Note:
overwriteis only supported on Windows (makeappx.exe). This parameter is silently ignored on Linux, asmakemsixdoes 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)
binaryconstructor argumentPYMSIX_BINARYenvironment variable- Windows SDK
makeappx.exe(Windows only) - Bundled
makemsixbinary (Linux only)
Sign binary (signtool.exe / osslsigncode)
sign_binaryconstructor argumentPYMSIX_SIGN_BINARYenvironment variable- Windows SDK
signtool.exe(Windows only) osslsigncodeonPATH(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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymsix-1.1.1.tar.gz.
File metadata
- Download URL: pymsix-1.1.1.tar.gz
- Upload date:
- Size: 47.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc4b31d7e3bdcea9798feb0a6eb9477aec8bccc898e3372cb3d1c8f68c088c40
|
|
| MD5 |
c314addb114bd437bd884fa9ec84dd8e
|
|
| BLAKE2b-256 |
a7cbd5a28de3206a099a072d0b2100a2dd5bdef76ab1e6cad55cf27f183d6757
|
File details
Details for the file pymsix-1.1.1-py3-none-any.whl.
File metadata
- Download URL: pymsix-1.1.1-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da78be4d0a66c36a1b33366c29a1a68f78e3df74609797c6707302bff03a58d2
|
|
| MD5 |
23f71c91265f82b7556f456282705e69
|
|
| BLAKE2b-256 |
2f5e6abc879e449e513a365e0d797219833b1d1330597a0d7363f9e0ad9c2b56
|