http://bugs.winehq.org/show_bug.cgi?id=19126
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #1 from Anastasius Focht focht@gmx.net 2009-06-29 15:54:19 --- Hello,
Wine's msi ignores embedded transforms stored in patch file (GUID 000C1082-0000-0000-C000-000000000046).
See:
http://blogs.msdn.com/heaths/archive/2006/02/27/539960.aspx ("Identifying Windows Installer File Types")
--- snip --- ... 0028:Call msi.MsiGetSummaryInformationA(00000000,0032fc84 "C:\windows\temp\f97.tmp",00000000,0032fc20) ret=01014f25 ... 0028:trace:msi:MsiGetSummaryInformationW 0 L"C:\windows\temp\f97.tmp" 0 0x32fc20 0028:trace:msi:MSI_OpenDatabaseW L"C:\windows\temp\f97.tmp" (null) 0028:Call ole32.StgOpenStorage(0013d0e8 L"C:\windows\temp\f97.tmp",00000000,00000020,00000000,00000000,0032fa6c) ret=70511891 0028:Call KERNEL32.CreateFileW(0013d0e8 L"C:\windows\temp\f97.tmp",80000000,00000001,00000000,00000003,10000080,00000000) ret=7067410d 0028:Ret KERNEL32.CreateFileW() retval=00000070 ret=7067410d ... 0028:Ret ole32.StgOpenStorage() retval=00000000 ret=70511891 ... 0028:err:msi:MSI_OpenDatabaseW storage GUID is not a MSI database GUID {000c1082-0000-0000-c000-000000000046} ... 0028:Ret msi.MsiGetSummaryInformationA() retval=0000065b ret=01014f25 0028:Call msi.MsiGetLastErrorRecord() ret=01011e3b 0028:fixme:msi:MsiGetLastErrorRecord 0028:Ret msi.MsiGetLastErrorRecord() retval=00000000 ret=01011e3b 0028:Call KERNEL32.CreateFileA(004a2770 "C:\windows\temp\VS80sp1-KB926750-X86-ENU\VS80sp1-KB926750-X86-ENU-wrapper.log",40000000,00000001,00000000,00000004,00000080,00000000) ret=01011c66 --- snip ---
--- snip msi/dlls/database.c --- UINT MSI_OpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIDATABASE **pdb) { ... if( szPersist == MSIDBOPEN_READONLY ) { r = StgOpenStorage( szDBPath, NULL, STGM_DIRECT|STGM_READ|STGM_SHARE_DENY_WRITE, NULL, 0, &stg); } ... if( FAILED( r ) || !stg ) { FIXME("open failed r = %08x for %s\n", r, debugstr_w(szDBPath)); return ERROR_FUNCTION_FAILED; }
r = IStorage_Stat( stg, &stat, STATFLAG_NONAME ); if( FAILED( r ) ) { FIXME("Failed to stat storage\n"); goto end; }
if ( !IsEqualGUID( &stat.clsid, &CLSID_MsiDatabase ) && !IsEqualGUID( &stat.clsid, &CLSID_MsiPatch ) ) { ERR("storage GUID is not a MSI database GUID %s\n", debugstr_guid(&stat.clsid) ); goto end; } --- snip msi/dlls/database.c ---
Though it should be able to load summary info from transforms with minor effort.
---
As side note, the patch installer also produces its own log file to make diagnosis easier. Though Wine debugging channels are much more verbose ;-)
See: http://blogs.msdn.com/heaths/archive/2005/10/20/483129.aspx
--- snip VS80sp1-KB926750-X86-ENU-wrapper.log --- ... + Initializing patch object from patch package + Releasing products - Releasing products Accessing summary info for LastSavedBy + Loading summary info from file - Loading summary info from file LastSavedBy = :T2_26ToU295_26;:#T2_26ToU295_26 Products counted, 1 found Initializing all products found + Creating temporary file - Creating temporary file + Transform extraction... Extracting transform 'T2_26ToU295_26' to "C:\windows\temp\f97.tmp" - Transform extraction... + Initializing product from transform + Loading summary info from file ERROR: [1627] Failed to get summary information. - Loading summary info from file ERROR [1627]: ERROR_FUNCTION_FAILED
- Initializing product from transform ERROR [1627]: ERROR_FUNCTION_FAILED
- Initializing patch object from patch package ERROR [1627]: ERROR_FUNCTION_FAILED ... --- snip VS80sp1-KB926750-X86-ENU-wrapper.log ---
Regards