Skip to content

airtaxi/AT-Installer

Repository files navigation

AT Installer

한국어 | English

NuGet CI

A lightweight Windows installer framework built with WinUI 3

image

Overview

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:

  1. Installer Composer - A GUI tool for creating .atp installation packages
  2. MSIX Installer Generator - A companion GUI tool for MSIX certificate, manifest, and packaging, plus EXE SFX composition (available on the Microsoft Store)
  3. 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.

Features

  • 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/.msixbundle into 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

Project Structure

The solution contains four projects:

Installer

Runtime installer application that handles:

  • Package extraction and installation
  • Registry registration
  • Start menu shortcut creation
  • Multi-language UI

InstallerComposer

Package creation tool featuring:

  • Application manifest configuration
  • Icon embedding
  • Custom script configuration
  • Settings save/load functionality

InstallerComposerCommandLine

NativeAOT console package creation tool for CI, Linux, and AI automation:

  • Reads .aticconfig files
  • Creates .atp packages without launching the WinUI composer
  • Resolves relative application and output paths from the config file directory

InstallerCommons

Shared library containing:

  • ZIP compression utilities with progress reporting
  • Installation and uninstallation manifest definitions
  • Common helper classes

Getting Started

Prerequisites

  • Windows 10 (1809) or later
  • .NET 10.0 SDK
  • Visual Studio 2022 / 2026 with WinUI 3 workload

Building from Source

  1. Clone the repository
  2. Open AT Installer.sln in Visual Studio 2022 / 2026
  3. Build the solution

Creating an Installation Package

  1. Launch InstallerComposer
  2. 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%
  3. Set the application icon (PNG format)
  4. Select the Application Root Directory containing your application files
  5. Choose the main Executable File
  6. (Optional) Configure post-install/uninstall scripts
  7. Set the Package File Path for the output .atp file
  8. Go to File > Export Package

Installing an Application

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

Silent Installation Exit Codes

Code Description
0 Success
24 Cannot downgrade (installed version is newer)
25 Extraction failed
26 Registry registration failed

Package Format (.atp)

The .atp package is a ZIP archive containing:

  • manifest.json: Installation manifest
  • data.bin: Compressed application files

MSIX and MSIXBundle Support

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.

Configuration Files

Composer Config (.aticconfig)

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.

Downloads

Download the latest release from the Releases page.

Available Downloads

The release includes a compressed archive (Release.7z) containing tools to create self-extracting installers.

Creating 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 Folder Structure

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-arm64 and Archive-x86 folders 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.exe as the batch files can use the system-installed Bandizip command-line tool instead.

Step-by-Step Guide

1. Download and Extract Release Archive

Download Release.7z from GitHub Releases and extract it to a folder (e.g., C:\ATInstaller\Release\)

2. Prepare Your Package

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

3. Create 7z Archive

Run the appropriate batch file to create the compressed archive:

# For x64
createArchive.bat

# For ARM64
createArchive-arm64.bat

# For x86
createArchive-x86.bat

This 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.

4. Create Self-Extracting Installer

Choose one of the following options:

Option A: Standard Installer

# For x64
composeInstaller.bat

# For ARM64
composeInstaller-arm64.bat

# For x86
composeInstaller-x86.bat

Creates Installer.exe that shows the installation UI.

Option B: Silent Installer

# For x64
composeSilentInstaller.bat

# For ARM64
composeSilentInstaller-arm64.bat

# For x86
composeSilentInstaller-x86.bat

Creates 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.bat

Prompts for a custom filename and creates YourName.exe.

5. Distribute

The generated .exe file is a standalone installer that:

  1. Extracts the bundled files to a temporary location
  2. Launches Installer.exe with Package.atp
  3. Installs your application

Config Files Explained

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.

Example Workflow

# 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

Technical Details

  • 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

Author

Howon Lee (airtaxi)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

All-in-one Windows installer framework — MSIX/MSIXBundle packaging, EXE SFX composition, and .atp installer generation built on WinUI 3

Topics

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages