Start from the first MSI and add one concern at a time. These examples use the containerized tool so they work from every supported authoring host.

Modern destination UI and license

docker compose run --rm build run build `
  --id com.example.editor --name "Example Editor" --version 1.0.0 `
  --publisher Example --payload ./app --output ./dist/editor.msi `
  --install-dir-ui --ui-pages standard --ui-theme modern `
  --license ./assets/license.rtf

The RTF file must be valid. Silent installation does not show or accept the interactive license control; the operator remains responsible for the terms.

Installed apps icon and simple shortcuts

docker compose run --rm build run build `
  --id com.example.editor --name "Example Editor" --version 1.0.0 `
  --publisher Example --payload ./app --output ./dist/editor.msi `
  --app-icon ./assets/editor.ico --shortcut-target bin/editor.exe `
  --start-menu-shortcut --desktop-shortcut

The target must be an .exe inside the payload. Setupidity validates the icon, target, and safe shortcut names before writing the MSI.

Launch condition and LZX compression

docker compose run --rm build run build `
  --id com.example.editor --name "Example Editor" --version 1.0.0 `
  --publisher Example --payload ./app --output ./dist/editor.msi `
  --compression lzx `
  --condition "Installed OR EDITOR_ALLOWED" `
  --message "Set EDITOR_ALLOWED=1 to install this product."

Conditions apply to interactive and silent installs. Include Installed OR when maintenance should continue without the first-install property.

For the complete optional-feature walkthrough, see the repository README example.


Previous: CLI reference · Next: Supported features

View source · Edit this page