Package Installers for Desktop Apps

Goal

Produce installers users and IT can trust, upgrade, and uninstall.

Why

Distribution and packaging.

Windows

  1. Choose MSI, MSIX, or a bundle your updater/winget can consume

  2. Decide per-user vs per-machine scope early (affects paths and UAC)

  3. Add Start Menu shortcut, ARP uninstall entry, and optional PATH

  4. Authenticode-sign release builds

  5. Smoke-test upgrade: install N → install N+1 → data preserved → uninstall clean

  6. Emit checksums next to the artifact on the Git release

Tools vary by stack (WiX, Advanced Installer, cargo-packager, electron-builder, Velopack, Flutter distributors, etc.). Prefer one pipeline that CI runs on tags.

macOS

  1. App bundle in /Applications (or user Applications)

  2. Notarize and staple

  3. Sparkle or Store for updates when not using Homebrew cask alone

Linux

  1. Prefer distro packages or Flatpak/AppImage with a clear story

  2. Avoid “only a raw binary in /tmp” for GUI 1.0

Wire to release automation

Tags should build installers, sign, upload, and optionally open winget/Homebrew PRs — Automated releases.