aticmsixgen 1.0.0
dotnet tool install --global aticmsixgen --version 1.0.0
dotnet new tool-manifest
dotnet tool install --local aticmsixgen --version 1.0.0
#tool dotnet:?package=aticmsixgen&version=1.0.0
nuke :add-package aticmsixgen --version 1.0.0
MSIX Installer Generator
한국어 | English
An all-in-one solution for creating Windows sandboxed installers from any application.<br><br> <img width="1178" height="589" alt="MSIX Installer Generator" src=".github/msix_en.png" />
Why MSIX?
MSIX is the modern Windows packaging format that brings real benefits to both developers and end users:
- Sandboxed by design — Windows automatically manages the registry keys, file associations, and other system changes your program makes, all inside an isolated environment.
- Clean uninstall — when the user removes the application, nothing is left behind. No orphaned registry entries, no leftover AppData folders.
- Multi-architecture in one package — the MSIXBundle format lets you ship x64, x86, and ARM64 builds inside a single
.msixbundlefile. Users download once and Windows installs the right architecture automatically.
But MSIX on its own is hard to distribute. End users must enable Developer Mode, run PowerShell commands, trust certificates, and deal with confusing dependency errors before they can even install.
AT Installer and MSIX Installer Generator eliminate all of that. You get the sandboxing, clean uninstalls, and multi-architecture packaging of MSIX — combined with the simplicity of a traditional double-click EXE installer. Users download, run, and the installer handles the rest.
Getting Started
Download from the Microsoft Store
Prerequisites
- Windows 10 (1809) or later
MSIX Packaging
When your application framework (e.g. Electron, Tauri, WPF) does not provide native MSIX packaging, MSIX Installer Generator makes it easy. Powered by the WinApp CLI, the tool handles MSIX packaging so you don't have to.
Already have a packaged MSIX application? Jump straight to the EXE Packaging section.
MSIX packaging is divided into three steps: Certificate, Manifest, and Packaging.
Certificate
A certificate is not strictly required for distribution, but it is strongly recommended. MSIX requires users to trust the certificate before sideloading, so if you sign every release with a temporary certificate, users end up adding a new certificate to their system on every update.
To avoid this, generate a dedicated certificate once and reuse it across releases.
Three inputs are needed:
- Publisher — This is an X.500 distinguished name field. If you're unfamiliar with X.500, just enter your publisher name and it will be automatically mapped to the X.500 Common Name (CN). Use the name of the entity distributing the application.
- Validity (days) — Once the validity period expires, you can no longer create new signatures with this certificate. However, signatures made while the certificate was valid remain valid even after expiry, so choose an appropriate period. The default is 5 years (1825 days).
- Password — The default is
password. This password is required when generating an MSIX package, and the packaging menu auto-fills the default password for you. If you want stronger security, you can set a more robust password.
Manifest
A manifest (.aticmsixconfig) consolidates all the information MSIX needs — except version and certificate — into a single settings file. Create the manifest before packaging to define your application's basic metadata:
| Field | Description |
|---|---|
| Display Name | The application's display name shown to users. |
| Description | A human-readable description of the application. |
| Executable | The executable file name inside the build output (e.g. MyApp.exe). Used to detect the architecture of each folder. |
| Logo | (Optional) Path to a logo image (.png, .jpg, .bmp, .ico). Embedded directly in the manifest. |
Packaging
With a manifest, certificate, version, and one or more build output directories, you're ready to package.
Because MSIX supports the MSIXBundle format — which lets multiple architectures live in a single package — you can add a separate output folder for each architecture (e.g. one for x64, one for ARM64). The tool detects each folder's architecture automatically from the executable and produces a single .msix (one architecture) or .msixbundle (multiple architectures).
EXE Packaging
The EXE Packaging menu takes a pre-packaged MSIX or an MSIX produced by MSIX Installer Generator and turns it into a standalone installer EXE.
MSIX alone is not a good distribution format for end users. As noted in the README, sideloading an MSIX requires enabling Developer Mode, running PowerShell commands, and trusting certificates — none of which average users should have to deal with.
EXE Packaging automates the entire sideloading process. The output is a single self-extracting EXE installer (per architecture) or a single ZIP archive containing per-architecture installers. Users download and run it just like any traditional Windows installer — no PowerShell, no Developer Mode, no certificate prompts.
MSIX Installer Generator CLI
For AI-assisted workflows or CI automation, the MSIX Installer Generator CLI (aticmsixgen) provides every feature of the GUI tool from the command line. It is a NativeAOT single executable with no runtime dependencies.
Commands
| Command | Summary |
|---|---|
cert generate |
Generate a self-signed PFX certificate. |
manifest create |
Create a new .aticmsixconfig manifest file. |
manifest show <path> |
Display manifest config file contents. |
manifest update <path> |
Update an existing .aticmsixconfig manifest file. |
msix-pack |
Package MSIX/MSIXBundle from a manifest config file and output folders. |
msix-quick-pack |
Package MSIX/MSIXBundle from inline parameters without a manifest file. |
exe-pack |
Create SFX EXE installer(s) from an existing MSIX/MSIXBundle. |
Examples
Generate a self-signed certificate:
aticmsixgen cert generate --publisher "My Company" --output cert.pfx
Create a manifest:
aticmsixgen manifest create --display-name "My App" --description "A great app" --executable "MyApp.exe" -o app.aticmsixconfig
Display an existing manifest:
aticmsixgen manifest show app.aticmsixconfig
Update a manifest (e.g. change the display name):
aticmsixgen manifest update app.aticmsixconfig --display-name "My App v2"
Package an MSIXBundle from a manifest with multiple architectures:
aticmsixgen msix-pack --manifest app.aticmsixconfig -o MyPackage.msixbundle -f bin\x64\Release -f bin\arm64\Release --cert cert.pfx --version 1.0.0.0
Quick-pack without a manifest file (inline parameters):
aticmsixgen msix-quick-pack --display-name "My App" --description "A great app" --executable "MyApp.exe" -o MyPackage.msix -f bin\x64\Release --cert cert.pfx --version 1.0.0.0
Compose a standalone EXE installer from an MSIXBundle:
aticmsixgen exe-pack -i MyPackage.msixbundle -o MyInstaller.zip
Run
aticmsixgen --helpfor the complete list of options.
Author
Howon Lee (airtaxi)
- GitHub: @airtaxi
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 80 | 7/11/2026 |