[ros-diffs] [akhaldi] 55268: [MSISIP] * Sync to Wine 1.3.37.

akhaldi at svn.reactos.org akhaldi at svn.reactos.org
Fri Jan 27 23:08:54 UTC 2012


Author: akhaldi
Date: Fri Jan 27 23:08:50 2012
New Revision: 55268

URL: http://svn.reactos.org/svn/reactos?rev=55268&view=rev
Log:
[MSISIP]
* Sync to Wine 1.3.37.

Modified:
    trunk/reactos/dll/win32/msisip/main.c
    trunk/reactos/media/doc/README.WINE

Modified: trunk/reactos/dll/win32/msisip/main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msisip/main.c?rev=55268&r1=55267&r2=55268&view=diff
==============================================================================
--- trunk/reactos/dll/win32/msisip/main.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msisip/main.c [iso-8859-1] Fri Jan 27 23:08:50 2012
@@ -24,6 +24,7 @@
 #include "mssip.h"
 #define COBJMACROS
 #include "objbase.h"
+#include "initguid.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(msisip);
@@ -217,34 +218,39 @@
     return ret;
 }
 
+DEFINE_GUID(CLSID_MsiTransform, 0x000c1082,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(CLSID_MsiDatabase,  0x000c1084,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(CLSID_MsiPatch,     0x000c1086,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+
 /***********************************************************************
  *              MsiSIPIsMyTypeOfFile (MSISIP.@)
  */
 BOOL WINAPI MsiSIPIsMyTypeOfFile(WCHAR *name, GUID *subject)
 {
-    static const WCHAR msi[] = { '.','m','s','i',0 };
-    static const WCHAR msp[] = { '.','m','s','p',0 };
     BOOL ret = FALSE;
+    IStorage *stg = NULL;
+    HRESULT r;
 
     TRACE("(%s, %p)\n", debugstr_w(name), subject);
 
-    if (lstrlenW(name) < lstrlenW(msi))
-        return FALSE;
-    else if (lstrcmpiW(name + lstrlenW(name) - lstrlenW(msi), msi) &&
-     lstrcmpiW(name + lstrlenW(name) - lstrlenW(msp), msp))
-        return FALSE;
-    else
-    {
-        IStorage *stg = NULL;
-        HRESULT r = StgOpenStorage(name, NULL,
-         STGM_DIRECT|STGM_READ|STGM_SHARE_DENY_WRITE, NULL, 0, &stg);
-
+    r = StgOpenStorage(name, NULL, STGM_DIRECT|STGM_READ|STGM_SHARE_DENY_WRITE,
+     NULL, 0, &stg);
+    if (SUCCEEDED(r))
+    {
+        STATSTG stat;
+
+        r = IStorage_Stat(stg, &stat, STATFLAG_NONAME);
         if (SUCCEEDED(r))
         {
-            IStorage_Release(stg);
-            *subject = mySubject;
-            ret = TRUE;
-        }
+            if (IsEqualGUID(&stat.clsid, &CLSID_MsiDatabase) ||
+             IsEqualGUID(&stat.clsid, &CLSID_MsiPatch) ||
+             IsEqualGUID(&stat.clsid, &CLSID_MsiTransform))
+            {
+                ret = TRUE;
+                *subject = mySubject;
+            }
+        }
+        IStorage_Release(stg);
     }
     return ret;
 }

Modified: trunk/reactos/media/doc/README.WINE
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=55268&r1=55267&r2=55268&view=diff
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Fri Jan 27 23:08:50 2012
@@ -104,7 +104,7 @@
 reactos/dll/win32/msimg32         # Autosync
 reactos/dll/win32/msi             # Autosync
 reactos/dll/win32/msimtf          # Autosync
-reactos/dll/win32/msisip          # Autosync
+reactos/dll/win32/msisip          # Synced to Wine-1.3.37
 reactos/dll/win32/msisys.ocx      # Autosync
 reactos/dll/win32/msnet32         # Autosync
 reactos/dll/win32/msrle32         # Autosync




More information about the Ros-diffs mailing list