Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Wizard pages and install location

The interactive installer is a four-step wizard: License, Choose location, Progress, Done. This page covers everything that shapes that flow at build time: which pages appear, where the install lands, what the destination-folder guard allows, and what happens on the final page.

All options below work on the CLI and as config file keys.

Skip pages

OptionEffect
--skip-licenseHide the License page.
--skip-pathHide the Choose-location page; install straight to the default location. When the license is still shown, its button reads Install.

With both flags, the wizard goes straight to Progress on launch:

installer_builder.exe pack `
    --product "My App" --product-id myapp --publisher "My Company" --to-version 1.0 `
    --input .\build\myapp --exe myapp.exe `
    --skip-license --skip-path `
    --default-install-dir "%LOCALAPPDATA%\Programs\MyApp" `
    --priv-key .\keys\priv.key --pub-key .\keys\pub.key `
    --out .\dist\setup-myapp-1.0.exe

The proposed install location

--default-install-dir <DIR> sets the path the Choose page proposes. It may contain %VAR% environment tokens, for example %LOCALAPPDATA%\Programs\MyApp or C:\Games\MyApp.

At runtime, the installer picks the proposed location in this order:

  1. An explicit path argument (--silent "<dir>", --minimal "<dir>", or the INSTALLWAY_PATH environment variable).
  2. The folder the product was last installed to. A reinstall or upgrade lands in place, and the Choose page is skipped automatically.
  3. The build's --default-install-dir, with %VAR% tokens expanded.
  4. %LOCALAPPDATA%\Programs\<product>.

A reinstall or upgrade always skips the Choose page, for full and patch installers alike, regardless of --skip-path. A patch must land in the existing folder because it patches the files on disk, and a full reinstall there avoids an accidental second copy elsewhere. The build-time --skip-path only affects first installs. Detection is keyed by publisher plus product, so it works across versions.

The non-empty-folder guard

By default, a fresh interactive install refuses a destination folder that is not empty, which protects users from extracting into C:\Users\name\Documents by accident. --install-dir-restriction tunes this:

ValueEffect
enforceBlock any non-empty destination (default).
default-dir-onlyAllow only the build's --default-install-dir to be non-empty.
bypassAllow any folder.

Use default-dir-only when replacing a legacy InstallShield or MSI install that lives in its own fixed directory. Pair it with --purge-unknown-files and a plugin that validates the old install before install and tears it down at uninstall.

The "launch now" checkbox

The Done page shows a "launch the product now" checkbox. --launch-option controls it:

ValueEffect
checkedVisible and ticked (default). The product launches on Finish unless the user clears it.
uncheckedVisible but not ticked. The user opts in.
hiddenNo checkbox. The installer never offers to launch the product.

This only affects the interactive wizard's Done page. Silent and minimal installs decide launching with the runtime --launch flag instead.

Minimal UI for upgrades

--upgrade-minimal-ui makes an upgrade use the compact minimal UI, the small "Applying update" window, instead of the full wizard. It is off by default.

RunUI with --upgrade-minimal-ui set
First install (no prior copy)Full wizard, always.
Upgrade or reinstall over an existing copyMinimal UI.
--silent / --minimalUnchanged; the flag has no effect.

It works on full and patch installers alike. The choice is read from the payload of the installer being run, so it applies to the next installer that carries the flag, never retroactively to the copy already on disk.

An upgrade shown in the minimal UI installs into the existing folder and launches the app afterward only if --launch is passed. There is no Done page and no launch checkbox.