Setupidity currently has one command: build. Arguments may appear in any order. Unknown arguments, missing values, and invalid combinations fail before the output MSI replaces an existing valid file.

Required options

  • --id ID — stable ASCII authoring identifier, such as com.example.product. It determines the Windows Installer upgrade identity.
  • --name NAME — UTF-8 product name shown by Windows Installer, at most 72 input bytes. It also supplies default folder names.
  • --version X.Y.Z — MSI-compatible numeric product version.
  • --publisher NAME — publisher shown in Installed apps; Unicode text supplied as UTF-8, at most 72 input bytes.
  • --payload DIR — directory tree copied into the installation directory.
  • --output FILE.msi — destination MSI. Its parent directory is created.

Installation and UI

  • --install-dir-name NAME chooses the default folder under Program Files.
  • --install-dir-ui enables destination selection.
  • --ui-pages standard|minimal selects the page flow; default standard.
  • --ui-theme classic|modern selects styling; default classic.
  • --license FILE.rtf adds an RTF license agreement page.
  • --condition EXPR --message TEXT adds a paired launch condition. Repeat the pair for multiple requirements. Messages accept Unicode text supplied as UTF-8, at most 255 input bytes.
  • --remove-empty-folders removes authored directories on uninstall when they contain no remaining user content.

Icons, folders, and shortcuts

  • --app-icon FILE.ico adds a valid icon to Installed apps.
  • --shortcut-target RELATIVE.exe selects one payload executable for the convenience shortcut options.
  • --start-menu-shortcut and --desktop-shortcut enable those locations.
  • --start-menu-name NAME and --desktop-name NAME override shortcut names.
  • --folder ID,PARENT,NAME declares a custom folder. Repeat as needed.
  • --shortcut ID,FOLDER,NAME,TARGET declares a custom shortcut.
  • --shortcut-arguments ID,ARGS adds arguments to a declared shortcut.
  • --shortcut-icon ID,FILE.ico assigns its icon.

Folder destinations may be install, program-menu, desktop, startup, or another declared folder ID. Custom definitions may appear in any order, but a shortcut setting must follow its matching --shortcut on the command line.

Compression and output

  • --compression mszip|none|lzx controls the embedded Cabinet; default mszip.
  • --force atomically replaces an existing output after a successful build.

See text, characters, and limits for destination-name restrictions, encoding, and localized RTF license text.

The list above is checked against the CLI parser in src/main.zig during CI. When a flag is added or removed, the reference must change in the same merge request.


Previous: Build your first MSI · Next: Examples

View source · Edit this page