MSI: write more keys and fix REG_SZ_MULTI

Aric Stewart aric at codeweavers.com
Mon May 23 08:27:21 CDT 2005


Double terminate SZ_MULTI properly.
ClassInfo and ExtensionInfo are also written for ADVERTISED components.

-------------- next part --------------
Index: dlls/msi/action.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/action.c,v
retrieving revision 1.120
diff -u -r1.120 action.c
--- dlls/msi/action.c	20 May 2005 18:59:01 -0000	1.120
+++ dlls/msi/action.c	23 May 2005 13:26:27 -0000
@@ -3691,6 +3691,10 @@
 
         deformat_string(package, name, &deformated);
 
+        /* get the double nulls to terminate SZ_MULTI */
+        if (type == REG_MULTI_SZ)
+            size +=sizeof(WCHAR);
+
         if (!check_first)
         {
             TRACE("Setting value %s of %s\n",debugstr_w(deformated),
@@ -4586,8 +4590,10 @@
             continue;
         }
 
-        if (!ACTION_VerifyComponentForAction(package, index,
-                                INSTALLSTATE_LOCAL))
+        if ((!ACTION_VerifyComponentForAction(package, index,
+                                INSTALLSTATE_LOCAL)) &&
+            (!ACTION_VerifyComponentForAction(package, index,
+                                INSTALLSTATE_ADVERTISED)))
         {
             TRACE("Skipping class reg due to disabled component\n");
             msiobj_release(&row->hdr);
@@ -6050,8 +6056,10 @@
             continue;
         }
 
-        if (!ACTION_VerifyComponentForAction(package, index,
-                                INSTALLSTATE_LOCAL))
+        if ((!ACTION_VerifyComponentForAction(package, index,
+                                INSTALLSTATE_LOCAL)) &&
+            (!ACTION_VerifyComponentForAction(package, index,
+                                INSTALLSTATE_ADVERTISED)))
         {
             TRACE("Skipping extension reg due to disabled component\n");
             msiobj_release(&row->hdr);


More information about the wine-patches mailing list