zotero/zotero-standalone-build — pull request #21 by mikesteele81 (2013-01-29 00:49:59+00:00)
Title: Windows installer: uninstaller always prompts for administrative credentials

Currently the uninstall always prompts for administrative credentials regardless of how Zotero was first installed.

The other pull requests I've made recently were all in support of this one. None of them should have changed user-visible behavior.

This branch does change the uninstaller's behavior in a way that users may notice:
* On Windows 7, removing Zotero from the Programs and Features listing will never trigger a UAC prompt regardless of whether it was installed globally or just for the user. Previously a UAC prompt would be triggered in all cases.
* The way in which the Programs and Features listing gets updated has changed.
* Zotero's uninstaller used to use registry entries to keep track of multiple valid instances. It would determine which instance to remove based on the location of the uninstaller executable. If multiple installations existed, various shortcuts and registry keys would be updated to one of the other instances. The uninstaller would search for registry keys and shortcuts to delete wherever it could find them.
* With this branch the uninstaller assumes that Zotero may be installed on a global bases at most once, or installed within the user's profile at most once. It determines which type of installation was made by scanning both the global and user's programs listing. Elevation will be requested when the global programs listing contains an entry with a path matching the uninstaller's working directory. If the installation was determined to be global, registry keys under `HKLM` and shortcuts in public locations will be deleted. If the installation was determined to be per-user, registry keys under `HKCU` and shortcuts in the user's profile will be deleted.
* A few keys under `HKCU` are deleted regardless of whether the installation is found to be global or per-user. This is done based on the status of a check box in the uninstallation wizard. Only the profile of the user running the uninstaller is modified.

I don't know how Windows Vista behaves. I think the behavior will be the same as in Windows 7, but with a UAC being prompted when the uninstaller determines that an installation was global. I don't have a convenient way of testing this.