한국어 | English
A lightweight Windows installer framework built with WinUI 3

AT Installer is a lightweight installer framework for Windows applications. It packages any Windows application into an MSIX/MSIXBundle and composes it into a double-click EXE installer that handles sideloading automatically.
The framework consists of three main components:
- Installer Composer - A GUI tool for creating
.atpinstallation packages - MSIX Installer Generator - A companion GUI tool for MSIX certificate, manifest, and packaging, plus EXE SFX composition (available on the Microsoft Store)
- Installer - The runtime installer that extracts and installs applications
The framework uses WinUI 3 with Mica backdrop and supports English, Korean, Japanese, and Chinese.
For more about MSIX-based installer generation, see MSIX.md.
- Modern UI with WinUI 3 interface and Mica backdrop
- Multi-language Support (English, Korean, Japanese, Chinese)
- Simple Package Format using
.atp(AT Package) format with ZIP compression - MSIX Packaging: certificate generation, manifest configuration, and MSIX/MSIXBundle creation from any build output
- EXE SFX Composition: turn any
.msix/.msixbundleinto a standalone double-click installer that handles sideloading automatically, without PowerShell or Developer Mode - CLI Tool (
aticmsixgen): full MSIX and EXE packaging from the command line for CI and AI automation - Customizable scripts during install/uninstall
- Multi-Architecture support (x64, ARM64, x86)
- Silent Install via command-line
- Registry Integration for proper Windows uninstaller registration
- Start Menu Integration with automatic shortcut creation
- Self-Extracting Installer creation using 7z SFX
The solution contains four projects:
Runtime installer application that handles:
- Package extraction and installation
- Registry registration
- Start menu shortcut creation
- Multi-language UI
Package creation tool featuring:
- Application manifest configuration
- Icon embedding
- Custom script configuration
- Settings save/load functionality
NativeAOT console package creation tool for CI, Linux, and AI automation:
- Reads
.aticconfigfiles - Creates
.atppackages without launching the WinUI composer - Resolves relative application and output paths from the config file directory
Shared library containing:
- ZIP compression utilities with progress reporting
- Installation and uninstallation manifest definitions
- Common helper classes
- Windows 10 (1809) or later
- .NET 10.0 SDK
- Visual Studio 2022 / 2026 with WinUI 3 workload
- Clone the repository
- Open
AT Installer.slnin Visual Studio 2022 / 2026 - Build the solution
- Launch InstallerComposer
- Fill in the application manifest:
- Application ID: Click "Generate" to create a unique GUID
- Application Name: Display name of your application
- Application Publisher: Publisher/Company name
- Installation Folder Name: Folder name in
%AppData%
- Set the application icon (PNG format)
- Select the Application Root Directory containing your application files
- Choose the main Executable File
- (Optional) Configure post-install/uninstall scripts
- Set the Package File Path for the output
.atpfile - Go to File > Export Package
Double-click the .atp file to launch the installer, or run via command line:
Installer.exe "path\to\package.atp"
Silent installation:
Installer.exe "path\to\package.atp" /silent
| Code | Description |
|---|---|
| 0 | Success |
| 24 | Cannot downgrade (installed version is newer) |
| 25 | Extraction failed |
| 26 | Registry registration failed |
The .atp package is a ZIP archive containing:
manifest.json: Installation manifestdata.bin: Compressed application files
MSIX and MSIXBundle are Windows packaging formats, but installing them outside the Microsoft Store is not straightforward. End users often need to enable Developer Mode, run PowerShell commands, or deal with certificate and dependency errors.
AT Installer handles this. The MSIX Installer Generator companion tool turns any .msix or .msixbundle package into a double-click installer, so users don't need PowerShell, Developer Mode, or sideloading setup.
Just load your MSIX file, pick the target architectures, and generate. The output is a standalone installer executable (per-architecture) or a single ZIP archive for multi-architecture distribution. Users download and run it like any traditional Windows installer.
Learn more about MSIX-based installer generation in MSIX.md.
Save and load package configurations for repeated builds:
- File > Save Settings
- File > Load Settings
Automate package creation by passing the config file as a command-line argument:
InstallerComposer.exe "path\to\config.aticconfig"
For CLI or Linux automation, use the NativeAOT console composer:
InstallerComposerCommandLine "path/to/config.aticconfig"
ApplicationRootDirectoryPath and PackageFilePath can be relative paths. The CLI resolves them from the .aticconfig file directory.
If you want to reduce progress log volume in automation or AI-assisted workflows, add --minimal-log to print only stage-level progress messages.
Download the latest release from the Releases page.
The release includes a compressed archive (Release.7z) containing tools to create self-extracting installers.
The Release folder includes tools to create self-extracting (SFX) installers that bundle the AT Installer with your .atp package into a single .exe file.
Release/
├── Archive/ # x64 Installer build
│ ├── Installer.exe
│ └── (other runtime files)
├── Archive-arm64/ # ARM64 Installer build
│ ├── Installer.exe
│ └── (other runtime files)
├── Archive-x86/ # x86 Installer build
│ ├── Installer.exe
│ └── (other runtime files)
├── 7zS.sfx # 7-Zip SFX module
├── bz.exe # Bandizip command-line tool (optional)
├── config.txt # Normal installer config
├── config_silent.txt # Silent installer config
├── createArchive.bat # Create Archive.7z from Archive folder
├── createArchive-arm64.bat # Create Archive-arm64.7z from Archive-arm64 folder
├── createArchive-x86.bat # Create Archive-x86.7z from Archive-x86 folder
├── composeInstaller.bat # Create Installer.exe (x64)
├── composeInstaller-arm64.bat # Create Installer-arm64.exe
├── composeInstaller-x86.bat # Create Installer-x86.exe
├── composeSilentInstaller.bat # Create silent Installer.exe (x64)
├── composeSilentInstaller-arm64.bat # Create silent Installer.exe (ARM64)
├── composeSilentInstaller-x86.bat # Create silent Installer.exe (x86)
├── composeByName.bat # Create custom-named installer (x64)
├── composeByName-arm64.bat # Create custom-named installer (ARM64)
└── composeByName-x86.bat # Create custom-named installer (x86)
Note: The
Archive,Archive-arm64andArchive-x86folders contain the published Installer runtime only. InstallerComposer is a separate development tool and not included in these folders.
Tip: If you have Bandizip installed on your system, you can delete
bz.exeas the batch files can use the system-installed Bandizip command-line tool instead.
Download Release.7z from GitHub Releases and extract it to a folder (e.g., C:\ATInstaller\Release\)
Place your .atp package file in the appropriate folder and rename it to Package.atp:
- For x64: Copy to
Release\Archive\Package.atp - For ARM64: Copy to
Release\Archive-arm64\Package.atp - For x86: Copy to
Release\Archive-x86\Package.atp
Important: The file must be named exactly
Package.atp
Run the appropriate batch file to create the compressed archive:
# For x64
createArchive.bat
# For ARM64
createArchive-arm64.bat
# For x86
createArchive-x86.batThis creates Archive.7z, Archive-arm64.7z or Archive-x86.7z in the Release folder.
Note: These batch files use
bz.exe(Bandizip CLI) or the system-installed Bandizip to create the 7z archive.
Choose one of the following options:
Option A: Standard Installer
# For x64
composeInstaller.bat
# For ARM64
composeInstaller-arm64.bat
# For x86
composeInstaller-x86.batCreates Installer.exe that shows the installation UI.
Option B: Silent Installer
# For x64
composeSilentInstaller.bat
# For ARM64
composeSilentInstaller-arm64.bat
# For x86
composeSilentInstaller-x86.batCreates Installer.exe that runs in silent mode (no UI).
Option C: Custom Named Installer
# For x64
composeByName.bat
# For ARM64
composeByName-arm64.bat
# For x86
composeByName-x86.batPrompts for a custom filename and creates YourName.exe.
The generated .exe file is a standalone installer that:
- Extracts the bundled files to a temporary location
- Launches
Installer.exewithPackage.atp - Installs your application
config.txt (Normal installation):
;!@Install@!UTF-8!
RunProgram="Installer.exe Package.atp"
;!@InstallEnd@!
config_silent.txt (Silent installation):
;!@Install@!UTF-8!
RunProgram="Installer.exe Package.atp /silent"
;!@InstallEnd@!
These config files tell the 7z SFX module what command to run after extraction.
# 1. Extract Release.7z
7z x Release.7z -oC:\ATInstaller\Release
# 2. Copy your package
copy MyApp.atp C:\ATInstaller\Release\Archive\Package.atp
# 3. Create archive
cd C:\ATInstaller\Release
createArchive.bat
# 4. Create installer
composeInstaller.bat
# 5. Distribute Installer.exe to your users- Framework: .NET 10.0
- UI Framework: WinUI 3 (Windows App SDK 1.8)
- Compression: ZIP with optimal compression
- Installation Location:
%AppData%\{InstallationFolderName} - Registry:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall - SFX Module: 7-Zip SFX (7zS.sfx)
- Archive Tool: Bandizip CLI (bz.exe) or system-installed Bandizip
- Supported Architectures: x64, ARM64, x86
Howon Lee (airtaxi)
- GitHub: @airtaxi
Contributions are welcome! Please feel free to submit a Pull Request.