http://bugs.winehq.org/show_bug.cgi?id=13995
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #2 from Anastasius Focht focht@gmx.net 2008-06-19 18:26:15 --- Hello,
--- quote --- ------- Comment #1 From James Hawkins 2008-06-19 13:08:01 [reply] -------
Has absolutely nothing to do with msi...the crash is in kernel32. If you're not certain which component a bug belongs to, please set it to -unknown. --- quote ---
Actually the bug reporter's guess was correct ;-)
The main installer is a .NET executable (managed code) which ships it's own set of managed msi/windows installer wrappers.
While trying to extract temporary patch files (msp) from resources it fails. Managed wrapper code calls wine msi MsiOpenDatabase() with an open flags value which msi doesn't handle yet.
--- snip --- err:msi:MSI_OpenDatabaseW unknown flag 0x24 --- snip ---
This causes managed and unmanaged exceptions later. Actually, this M$ blog entry sheds some light on this topic:
http://blogs.msdn.com/heaths/archive/2006/03/31/566288.aspx
0x24 = MSIDBOPEN_PATCHFILE + MSIDBOPEN_CREATEDIRECT
#define MSIDBOPEN_PATCHFILE 32/sizeof(*MSIDBOPEN_READONLY)
When you create the patch db in MSI_OpenDatabaseW, you need to take some considerations into account.
The installer will insert (resource) streams into newly created (temporary) db. The streams which are added to "_Storages" table come from .cab file which is an embedded resource in executable. The "_Storages" and "_Streams" tables need to be present.
This explains some stuff:
http://blogs.msdn.com/heaths/archive/2005/09/01/459561.aspx (What's in a Patch) http://blogs.msdn.com/heaths/archive/2006/02/14/532200.aspx (Extract Files from Patches)
This info should help you to create a valid patch db.
Regards