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?re…
==============================================================================
--- 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=…
==============================================================================
--- 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