Move TmpVal to common.nsh. New global variable "Trash" for throwing away stack entries.
Inline macro that was only being called from one place.
Remove unused macro IsPinnedToStartMenu
Use GetLongPath as a function instead of a macro.
Use RemoveQuotesFromPath as a function instead of a macro.
Update documentation for RemoveQuotesFromPath.
New function IterateUninstallKeys searches add/remove program entries of SHCTX for a matching InstallLocation.
Check whether elevation is required based on which add/remove programs listing contains a matching entry.
Windows uninstaller: Decide up front which shell var context is required.

The uninstaller was removing everything from HKLM and HKCU. We now determine
which type of uninstallation to perform, and work with only one hive.
Windows uninstaller: Do not request elevation in stub uninstaller

This patch defers process elevation until the real uninstaller has launched.

Prior to this update removing Zotero from the add/remove programs list would
always bring up a UAC prompt regardless of how Zotero was installed. The stub
uninstaller now launches the uninstaller with user credentials, and the
uninstall restarts itself if it determines that administrative credentials are
required.

In the case where the uninstaller does determine that administrative
credentials are required, elevation will now occur silently. Windows 7 allows
for silent elevation when removing items from the add/remove programs list.
Rewrite RegCleanUninstall in terms of IterateUninstallKeys.
Use DeleteRelativeProfiles as a function instead of a macro.
Update comments for DeleteRelativeProfiles.
Call DeleteRelativeProfiles for the current user before switching to a user or system uninstall.
Pull the setting of shellvarcontext out of leaf function.
Merge pull request #23 from mikesteele81/windows-uninstaller3

Windows installer: uninstaller always prompts for administrative credentials