http://bugs.winehq.org/show_bug.cgi?id=24187
Summary: msi: set "MsiAMD64" and "Msix64" standard properties in x64 environment (64bit installer of .NET Framework 2.0) Product: Wine Version: 1.3.1 Platform: x86-64 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: msi AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Hello,
this is a split-off from http://bugs.winehq.org/show_bug.cgi?id=22805#c6
The 64bit version of .NET Framework 2.0 fails due to launch condition not met.
--- snip --- ... 001b:trace:msidb:TABLE_get_column_info 0x7fffec3aba00 1 (nil) 0x7fffecf4de50 001b:trace:msidb:MSI_RecordSetStringW 0x7fffe3c28c20 1 L"MsiAMD64" 001b:trace:msidb:TABLE_get_column_info 0x7fffec3aba00 2 (nil) 0x7fffecf4de50 001b:trace:msidb:MSI_RecordSetStringW 0x7fffe3c28c20 2 L"This setup is only supported on AMD64 platforms" ... 001b:trace:msi:msi_get_property property L"MsiAMD64" not found 001b:trace:msi:MSI_EvaluateConditionW 0 <- L"MsiAMD64" 001b:trace:msi:msiobj_release object 0x7fffe3c28c20 destroyed 001b:trace:msi:MSI_ViewClose 0x7fffec3ab130 001b:trace:msidb:TABLE_close 0x7fffec3aba00 001b:trace:msidb:TABLE_delete 0x7fffec3aba00 001b:trace:msi:msiobj_release object 0x7fffec3ab130 destroyed 001b:trace:msidb:MSI_CreateRecord 1 001b:trace:msidb:MSI_RecordSetStringW 0x7fffec3ab130 1 L"Action ended 17:16:07: LaunchConditions. Return value 1603." --- snip ---
You have to add standard properties that indicate 64-bit environment. Current, only the "Intel" (32 bit) standard property is handled.
--- snip dlls/msi/package.c --- static VOID set_installer_properties(MSIPACKAGE *package) { ... static const WCHAR szIntFormat[] = {'%','d',0}; static const WCHAR szIntel[] = { 'I','n','t','e','l',0 }; ... GetSystemInfo( &sys_info ); if (sys_info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL) { sprintfW( bufstr, szIntFormat, sys_info.wProcessorLevel ); msi_set_property( package->db, szIntel, bufstr ); } ... --- snip dlls/msi/package.c ---
Just add handling for "MsiAMD64" (introduced with Windows Installer 3.0, still present for backward compatibility) and "Msix64" (introduced with with Windows Installer 3.1).
The values seem not relevant, it's only important that the properties exist. You can reuse the sys_info values from previous GetSystemInfo() call for "Intel" property to also test for AMD/64 bit case. In case of x64 system set both, "MsiAMD64" and "Msix64" properties.
With that in place, this launch condition succeeds only to run into next bug ;-)
Regards