I'm writing a Wix-based installer that needs to upgrade from older, non-msi-based installations. I'm finding instances of previously installed components by searching directly in the Registry.
To find the uninstaller for a component, I look in
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram
And get the UninstallString
value. This is fine, but I realised that for a 32 bit install on a 64 bit machine, the entry is actually at
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram
Is there anywhere else I ought to be looking?
Open the Registry Editor by selecting Start, Run, typing regedit and clicking OK. Navigate your way to HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall. In the left pane, with the Uninstall key expanded, right-click any item and select Delete.
Data pertaining to programs that are (or were at one time) installed on a system can also be found in the following registry locations: SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths. SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. The installed program data in the registry (in both NTUSER.
There's a third entry:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
I've checked this, and these are the only two locations. The second is used to store 32-bit programs on a 64-bit version of Windows. There are no other cases that need checking.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With