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 ascom.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 NAMEchooses the default folder under Program Files.--install-dir-uienables destination selection.--ui-pages standard|minimalselects the page flow; defaultstandard.--ui-theme classic|modernselects styling; defaultclassic.--license FILE.rtfadds an RTF license agreement page.--condition EXPR --message TEXTadds 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-foldersremoves authored directories on uninstall when they contain no remaining user content.
Icons, folders, and shortcuts
--app-icon FILE.icoadds a valid icon to Installed apps.--shortcut-target RELATIVE.exeselects one payload executable for the convenience shortcut options.--start-menu-shortcutand--desktop-shortcutenable those locations.--start-menu-name NAMEand--desktop-name NAMEoverride shortcut names.--folder ID,PARENT,NAMEdeclares a custom folder. Repeat as needed.--shortcut ID,FOLDER,NAME,TARGETdeclares a custom shortcut.--shortcut-arguments ID,ARGSadds arguments to a declared shortcut.--shortcut-icon ID,FILE.icoassigns 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|lzxcontrols the embedded Cabinet; defaultmszip.--forceatomically 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