[Bug 24187] New: msi: set "MsiAMD64" and "Msix64" standard properties in x64 environment (64bit installer of .NET Framework 2.0)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Aug 28 13:03:33 CDT 2010


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 at winehq.org
        ReportedBy: focht at 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

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list