msi: Open the install properties key based on the install context.
authorJames Hawkins <jhawkins@codeweavers.com>
Sat, 5 Apr 2008 11:02:04 +0000 (06:02 -0500)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 7 Apr 2008 09:27:30 +0000 (11:27 +0200)
dlls/msi/action.c

index ff931248742689f209aab273f707e852e423ad81..43ada4c7a7ef67e3626e41053497afaf108781d7 100644 (file)
@@ -3350,6 +3350,10 @@ static UINT ACTION_PublishProduct(MSIPACKAGE *package)
         rc = MSIREG_OpenLocalClassesProductKey(package->ProductCode, &hukey, TRUE);
         if (rc != ERROR_SUCCESS)
             goto end;
+
+        rc = MSIREG_OpenLocalSystemInstallProps(package->ProductCode, &props, TRUE);
+        if (rc != ERROR_SUCCESS)
+            goto end;
     }
     else
     {
@@ -3360,6 +3364,10 @@ static UINT ACTION_PublishProduct(MSIPACKAGE *package)
         rc = MSIREG_OpenUserProductsKey(package->ProductCode,&hukey,TRUE);
         if (rc != ERROR_SUCCESS)
             goto end;
+
+        rc = MSIREG_OpenCurrentUserInstallProps(package->ProductCode, &props, TRUE);
+        if (rc != ERROR_SUCCESS)
+            goto end;
     }
 
     rc = RegCreateKeyW(hukey, szSourceList, &source);
@@ -3372,10 +3380,6 @@ static UINT ACTION_PublishProduct(MSIPACKAGE *package)
     if (rc != ERROR_SUCCESS)
         goto end;
 
-    rc = MSIREG_OpenCurrentUserInstallProps(package->ProductCode, &props, TRUE);
-    if (rc != ERROR_SUCCESS)
-        goto end;
-
     buffer = msi_dup_property( package, INSTALLPROPERTY_PRODUCTNAMEW );
     msi_reg_set_val_str( hukey, INSTALLPROPERTY_PRODUCTNAMEW, buffer );
     msi_free(buffer);
@@ -3995,9 +3999,18 @@ static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
     if (rc != ERROR_SUCCESS)
         return rc;
 
-    rc = MSIREG_OpenCurrentUserInstallProps(package->ProductCode, &props, TRUE);
-    if (rc != ERROR_SUCCESS)
-        return rc;
+    if (package->Context == MSIINSTALLCONTEXT_MACHINE)
+    {
+        rc = MSIREG_OpenLocalSystemInstallProps(package->ProductCode, &props, TRUE);
+        if (rc != ERROR_SUCCESS)
+            return rc;
+    }
+    else
+    {
+        rc = MSIREG_OpenCurrentUserInstallProps(package->ProductCode, &props, TRUE);
+        if (rc != ERROR_SUCCESS)
+            return rc;
+    }
 
     /* dump all the info i can grab */
     /* FIXME: Flesh out more information */
@@ -4069,7 +4082,7 @@ static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
 
         msi_free(upgrade_code);
     }
-    
+
     RegCloseKey(hkey);
 
     rc = MSIREG_OpenUserDataProductKey(package->ProductCode, &hudkey, TRUE);