PDA

View Full Version : How does Windows Installer determine if an App is installed?



sks2004
11-04-2005, 04:20 PM
How does Windows Installer know that an app is installed? Or better yet, what Registry key(s) is Windows Installer looking for to determine if the app's ProductCode and/or UpgradeCode exist, and thus mark the app as 'Installed'?

Christopher Painter
11-04-2005, 04:38 PM
When MSI intializes it calls MSIQueryProuctState() and sets the Installed product. That's the documented part. The private undocumented ( but not to hard to figure out ) is in HKEY_CLASSES_ROOT ( HKEY_LOCAL_MACHINE\SOFTWARE\Classes and HKEY_CURRENT_USER\SOFTWARE\Classes ) In here you will see an Installer\Products key that stores MSI's data. The product codes are stored in "Darwin Transform" format.

alex1968
11-10-2006, 04:32 PM
Hi,

I have one UpgradeCode for several Products Code.

During update using UpgradeCode I want to remove some of the product that contains the same UpgradeCode.
Do we have a function or Property to list all the Products Code with the same UpgradeCode and remove some product from this list in order to uninstall those that I want.

I know that we have a registry keys under HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\UpgradeCodes I don't want to modify them directly using registry Win32 API.

Thanks.

RobertDickau
11-14-2006, 09:39 AM
(Follow-up here.)