http://bugs.winehq.org/show_bug.cgi?id=25182
Summary: MsiDatabaseImport on _ForceCodepage table returns ERROR_FUNCTION_FAILED Product: Wine Version: 1.3.7 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msi AssignedTo: wine-bugs@winehq.org ReportedBy: sam@robots.org.uk
I'm trying to run Wix http://wix.sourceforge.net/ under Wine. It fails when trying to compile a project that contains a Product containing a Codepage attribute.
Underneath, it is calling MsiDatabaseImport in order to import a value into the special _ForceCodepage table.
I have created a test program to replicate what it does. When run with Wine, this program displays the following output, and exits with status 1:
$ ~/src/wine/install/bin/wine /media/vmshare/wix-wine/codepage.exe Could not load wine-gecko. HTML rendering will be disabled. trace:msi:DllRegisterServer trace:msi:get_msi_typelib loading typelib trace:msi:MsiSetInternalUI 00000005 (nil) wine: configuration in '/tmp/user/1000/def' has been updated. trace:msi:MsiOpenDatabaseA "test.msi" #0004 0x61fcdc trace:msi:MsiOpenDatabaseW L"test.msi" #0004 0x61fcdc trace:msi:MSI_OpenDatabaseW L"test.msi" #0004 fixme:storage:create_storagefile Storage share mode not implemented. trace:msidb:enum_stream_names stream 0 -> L"\4840\3f7f\4164\422f\4836" L"\4840_Tables" trace:msidb:enum_stream_names stream 1 -> L"\4840\3f3f\4577\446c\3b6a\45e4\4824" L"\4840_StringData" trace:msidb:enum_stream_names stream 2 -> L"\4840\3f3f\4577\446c\3e6a\44b2\482f" L"\4840_StringPool" trace:msidb:read_stream_data L"_StringPool" -> L"\4840\3f3f\4577\446c\3e6a\44b2\482f" trace:msidb:read_stream_data L"_StringData" -> L"\4840\3f3f\4577\446c\3b6a\45e4\4824" trace:msidb:msi_load_string_table Loaded 1 strings trace:msi:alloc_msihandle 0x144cc0 -> 1 trace:msi:MsiDatabaseImportA 1 "Z:\tmp" "_ForceCodepage.idt" trace:msi:MsiDatabaseImportW 1 L"Z:\tmp" L"_ForceCodepage.idt" trace:msi:MSI_DatabaseImport 0x144cc0 L"Z:\tmp" L"_ForceCodepage.idt" MsiDatabaseImport: 1627 fixme:msi:MsiGetLastErrorRecord
When run under Windows, it succeeds and exits with status 0.