Uninstall
uninstall.exe and its metadata live outside the application folder, so a
manual delete of the app directory never orphans the Windows Apps entry.
The location depends on the install scope:
| Install type | Data folder | Apps entry |
|---|---|---|
| Per-user (default) | %LOCALAPPDATA%\<publisher>\Uninstall\<product-id>\ | HKCU\...\Uninstall\ |
| Machine-wide | %ProgramData%\<publisher>\Uninstall\<product-id>\ | HKLM\...\Uninstall\ |
<data-dir>\
uninstall.exe
installer_info.json (the real install_dir, associations, shortcuts, ...)
installer_manifest.json
The product appears in Settings > Apps > Installed apps (and in classic Add/Remove Programs). Machine-wide installs are listed for every user; per-user installs only for the installing user.
What uninstall does
Uninstalling runs uninstall.exe, which:
- Reads
installer_info.jsonto find the real install directory. - Runs plugin
downfunctions, best-effort and in reverse declaration order. See Plugins. - Walks
installer_manifest.jsonand removes every tracked file. If the install was machine-wide and the current user is not elevated, a UAC prompt is shown first and the file operations run in a hidden elevated subprocess. - Removes the shortcuts it created, the file associations that still point at our ProgID, and the registry entries it wrote (anti-stomp; empty created keys are pruned).
- Removes
version.json,installer_manifest.json, and empty subdirectories. - Deletes the Uninstall registry entry, in
HKCUorHKLMto match the install. - Spawns a second-stage copy of itself from
%TEMP%that deletes the app directory and the data directory (includinguninstall.exeitself), then schedules its own removal at reboot. Nocmd.exe, no console flash.
If the app folder was already deleted by hand, the file steps do nothing and the registry entry and data directory are still cleaned.
Silent uninstall
uninstall.exe --silent
Skips the confirmation dialog. This is what the registry
QuietUninstallString invokes.
Completion message
By default, an interactive uninstall ends without a confirmation dialog. To
show an "uninstall complete" message box at the end, build the installer
with --show-uninstall-complete (config key show_uninstall_complete).
Language
The uninstaller picks its UI language the same way the installer does:
--lang <code>, then the INSTALLWAY_LANG environment variable, then the
OS locale, with English as the fallback. See
Installer runtime flags.