Francois Gouget : msi: Link the WindowsInstaller. Installer ProgId back to the right CLSID.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Aug 9 16:18:41 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 407468e8515b7d9352957b0758de60aab71a6cd6
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=407468e8515b7d9352957b0758de60aab71a6cd6

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Wed Aug  9 19:13:17 2006 +0200

msi: Link the WindowsInstaller.Installer ProgId back to the right CLSID.

---

 dlls/msi/regsvr.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/dlls/msi/regsvr.c b/dlls/msi/regsvr.c
index 65c00a2..dca1c80 100644
--- a/dlls/msi/regsvr.c
+++ b/dlls/msi/regsvr.c
@@ -72,11 +72,15 @@ struct regsvr_coclass {
     LPCSTR ips;			/* can be NULL to omit */
     LPCSTR ips32;		/* can be NULL to omit */
     LPCSTR ips32_tmodel;	/* can be NULL to omit, if apartment, iph32 must be set */
+    DWORD flags;
     LPCSTR progid;		/* can be NULL to omit */
     LPCSTR viprogid;		/* can be NULL to omit */
     LPCSTR progid_extra;	/* can be NULL to omit */
 };
 
+/* flags for regsvr_coclass.flags */
+#define PROGID_CLSID                  0x00000010
+
 static HRESULT register_coclasses(struct regsvr_coclass const *list);
 static HRESULT unregister_coclasses(struct regsvr_coclass const *list);
 
@@ -296,7 +300,8 @@ static HRESULT register_coclasses(struct
 					 list->progid);
 	    if (res != ERROR_SUCCESS) goto error_close_clsid_key;
 
-	    res = register_progid(buf, list->progid, NULL,
+	    res = register_progid(list->flags & PROGID_CLSID ? buf : NULL,
+                                  list->progid, NULL,
 				  list->name, list->progid_extra);
 	    if (res != ERROR_SUCCESS) goto error_close_clsid_key;
 	}
@@ -306,7 +311,8 @@ static HRESULT register_coclasses(struct
 					 list->viprogid);
 	    if (res != ERROR_SUCCESS) goto error_close_clsid_key;
 
-	    res = register_progid(buf, list->viprogid, list->progid,
+	    res = register_progid(list->flags & PROGID_CLSID ? buf : NULL,
+                                  list->viprogid, list->progid,
 				  list->name, list->progid_extra);
 	    if (res != ERROR_SUCCESS) goto error_close_clsid_key;
 	}
@@ -526,6 +532,7 @@ static struct regsvr_coclass const cocla
 	NULL,
 	"msi.dll",
 	"Apartment",
+        PROGID_CLSID,
 	"IMsiServer",
 	NULL
     },    
@@ -536,6 +543,7 @@ static struct regsvr_coclass const cocla
 	NULL,
 	"msi.dll",
 	NULL,
+        PROGID_CLSID,
 	"WindowsInstaller.Message",
 	NULL
     },
@@ -546,6 +554,7 @@ static struct regsvr_coclass const cocla
 	NULL,
 	"msi.dll",
 	"Apartment",
+        0,
 	"WindowsInstaller.Installer",
 	NULL
     },
@@ -556,6 +565,7 @@ static struct regsvr_coclass const cocla
 	NULL,
 	"msi.dll",
 	"Apartment",
+        PROGID_CLSID,
 	"WindowsInstaller.Installer",
 	NULL
     },
@@ -566,6 +576,7 @@ static struct regsvr_coclass const cocla
 	NULL,
 	"msi.dll",
 	"Apartment",
+        0,
 	"WindowsInstaller.Installer",
         NULL
     },




More information about the wine-cvs mailing list