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... ============================================================================== --- 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=5... ============================================================================== --- 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