mirror of
https://github.com/reactos/reactos.git
synced 2024-08-05 11:00:55 +00:00
[MSISIP]
* Sync to Wine 1.3.37. svn path=/trunk/; revision=55268
This commit is contained in:
parent
cea6972358
commit
a56d039edf
|
@ -24,6 +24,7 @@
|
||||||
#include "mssip.h"
|
#include "mssip.h"
|
||||||
#define COBJMACROS
|
#define COBJMACROS
|
||||||
#include "objbase.h"
|
#include "objbase.h"
|
||||||
|
#include "initguid.h"
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msisip);
|
WINE_DEFAULT_DEBUG_CHANNEL(msisip);
|
||||||
|
@ -217,34 +218,39 @@ end:
|
||||||
return ret;
|
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.@)
|
* MsiSIPIsMyTypeOfFile (MSISIP.@)
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI MsiSIPIsMyTypeOfFile(WCHAR *name, GUID *subject)
|
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;
|
BOOL ret = FALSE;
|
||||||
|
IStorage *stg = NULL;
|
||||||
|
HRESULT r;
|
||||||
|
|
||||||
TRACE("(%s, %p)\n", debugstr_w(name), subject);
|
TRACE("(%s, %p)\n", debugstr_w(name), subject);
|
||||||
|
|
||||||
if (lstrlenW(name) < lstrlenW(msi))
|
r = StgOpenStorage(name, NULL, STGM_DIRECT|STGM_READ|STGM_SHARE_DENY_WRITE,
|
||||||
return FALSE;
|
NULL, 0, &stg);
|
||||||
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);
|
|
||||||
|
|
||||||
if (SUCCEEDED(r))
|
if (SUCCEEDED(r))
|
||||||
{
|
{
|
||||||
IStorage_Release(stg);
|
STATSTG stat;
|
||||||
*subject = mySubject;
|
|
||||||
|
r = IStorage_Stat(stg, &stat, STATFLAG_NONAME);
|
||||||
|
if (SUCCEEDED(r))
|
||||||
|
{
|
||||||
|
if (IsEqualGUID(&stat.clsid, &CLSID_MsiDatabase) ||
|
||||||
|
IsEqualGUID(&stat.clsid, &CLSID_MsiPatch) ||
|
||||||
|
IsEqualGUID(&stat.clsid, &CLSID_MsiTransform))
|
||||||
|
{
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
*subject = mySubject;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
IStorage_Release(stg);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,7 @@ reactos/dll/win32/mshtml # Autosync
|
||||||
reactos/dll/win32/msimg32 # Autosync
|
reactos/dll/win32/msimg32 # Autosync
|
||||||
reactos/dll/win32/msi # Autosync
|
reactos/dll/win32/msi # Autosync
|
||||||
reactos/dll/win32/msimtf # 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/msisys.ocx # Autosync
|
||||||
reactos/dll/win32/msnet32 # Autosync
|
reactos/dll/win32/msnet32 # Autosync
|
||||||
reactos/dll/win32/msrle32 # Autosync
|
reactos/dll/win32/msrle32 # Autosync
|
||||||
|
|
Loading…
Reference in a new issue