msi: Initialize the installation context from the registry if the product is installed.

This commit is contained in:
Hans Leidekker 2011-08-23 14:42:15 +02:00 committed by Alexandre Julliard
parent 70e3790707
commit db6dbcf2a2
2 changed files with 10 additions and 8 deletions

View File

@ -488,14 +488,15 @@ static BOOL needs_ui_sequence(MSIPACKAGE *package)
UINT msi_set_context(MSIPACKAGE *package)
{
int num;
package->Context = MSIINSTALLCONTEXT_USERUNMANAGED;
num = msi_get_property_int(package->db, szAllUsers, 0);
if (num == 1 || num == 2)
package->Context = MSIINSTALLCONTEXT_MACHINE;
UINT r = msi_locate_product( package->ProductCode, &package->Context );
if (r != ERROR_SUCCESS)
{
int num = msi_get_property_int( package->db, szAllUsers, 0 );
if (num == 1 || num == 2)
package->Context = MSIINSTALLCONTEXT_MACHINE;
else
package->Context = MSIINSTALLCONTEXT_USERUNMANAGED;
}
return ERROR_SUCCESS;
}

View File

@ -54,6 +54,7 @@ UINT msi_locate_product(LPCWSTR szProduct, MSIINSTALLCONTEXT *context)
HKEY hkey = NULL;
*context = MSIINSTALLCONTEXT_NONE;
if (!szProduct) return ERROR_UNKNOWN_PRODUCT;
if (MSIREG_OpenProductKey(szProduct, NULL, MSIINSTALLCONTEXT_USERMANAGED,
&hkey, FALSE) == ERROR_SUCCESS)