Remove the program's registry and icons right after the main exe, so if
it fails to remove another file and aborts, it won't leave invalid
entires. The user could run the uninstaller at another time (a restart
should fix any file locking issues).
Use cmd.exe when uninstaller is called with _? because the installer
will fail to remove it when elevation is required but is running as
standard user.
Includes StdUtils plugin and makes use of ExecShellAsUser to restart
the uninstaller when started as administrator. This stops the
uninstaller from failing for single-user installations of standard
users, when executed elevated by 'Apps & features' of Win10. It also
gets the correct user directories when executed by a standard user from
'Add/Remove Programs' or 'Apps & features' of an all-users installation.
This has the drawback of the uninstaller having to elevate if it needs
to, even when it's started as administrator. So the user gets the UAC
prompt twice in this case.
The uninstaller now removes the files of the user that started it, even
when it's using another account for elevation. The user has to run the
uninstaller directly though, because through Windows, it's starting
elevated from the get-go.
Unless the integration option is deselected, the uninstaller won't
remove the regisrty entries when upgrading, and the installer will update
the registry only when needed.