[Bug 48534] New: 32-bit MSXML 6.0 package fails to install in 64-bit WINEPREFIX 'package is not supported on the current processor type.'
https://bugs.winehq.org/show_bug.cgi?id=48534 Bug ID: 48534 Summary: 32-bit MSXML 6.0 package fails to install in 64-bit WINEPREFIX 'package is not supported on the current processor type.' Product: Wine Version: 5.0 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: msi Assignee: wine-bugs(a)winehq.org Reporter: focht(a)gmx.net Distribution: --- Hello folks, extracted/continuation from bug 44618 The MSXML 6.0 package is part of MindManager Pro v7.0 installer (app is 32-bit). It fails in default 64-bit WINEPREFIX as the MSXML6 redistributable package is only for 32-bit. --- snip --- $ WINEDEBUG=+msgbox wine ./MM70-E-429_Pro.exe ... 0077:trace:msgbox:MSGBOX_OnInit L"This MSXML6.0 package is not supported on the current processor type." 0077:err:msi:ITERATE_Actions Execution halted, action L"LaunchConditions" returned 1603 ... 0039:err:msi:ITERATE_Actions Execution halted, action L"RunMSXML6Setup" returned 1627 ... 0039:err:msi:ITERATE_Actions Execution halted, action L"ExecuteAction" returned 1627 --- snip --- MSXML6 package 'LaunchCondition' is indeed: --- snip --- (NOT VersionNT64) [WrongPackage] --- snip --- Direct link from Microsoft: https://download.microsoft.com/download/e/a/f/eafb8ee7-667d-4e30-bb39-4694b5... $ sha1sum msxml6_x86.msi 5125220e985b33c946bbf9f60e2b222c7570bfa2 msxml6_x86.msi $ du -sh msxml6_x86.msi 1.5M msxml6_x86.msi $ wine --version wine-5.0-201-gcf6546fb3b Regards -- 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.
https://bugs.winehq.org/show_bug.cgi?id=48534 Anastasius Focht <focht(a)gmx.net> changed: What |Removed |Added ---------------------------------------------------------------------------- URL| |https://download.microsoft. | |com/download/e/a/f/eafb8ee7 | |-667d-4e30-bb39-4694b5b3006 | |f/msxml6_x86.msi Keywords| |download, Installer -- 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.
https://bugs.winehq.org/show_bug.cgi?id=48534 Anastasius Focht <focht(a)gmx.net> changed: What |Removed |Added ---------------------------------------------------------------------------- URL|https://download.microsoft. |https://web.archive.org/web |com/download/e/a/f/eafb8ee7 |/20120112002014/http://down |-667d-4e30-bb39-4694b5b3006 |load.microsoft.com/download |f/msxml6_x86.msi |/e/a/f/eafb8ee7-667d-4e30-b | |b39-4694b5b3006f/msxml6_x86 | |.msi --- Comment #1 from Anastasius Focht <focht(a)gmx.net> --- Hello folks, revisiting, obviously still present. Adding stable links via Internet Archive: 'MindManager Pro v7.0' from bug 44618 https://web.archive.org/web/20071122165848/http://ftp2.mindjet.com/download/... 32-bit MSXML 6.0 redistributable package: https://web.archive.org/web/20120112002014/http://download.microsoft.com/dow... $ sha1sum MM70-E-429_Pro.exe a546bdbad175260764b0a11f250d02950b93e940 MM70-E-429_Pro.exe $ du -sh MM70-E-429_Pro.exe 77M MM70-E-429_Pro.exe $ wine --version wine-6.0-rc6 Regards -- 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.
http://bugs.winehq.org/show_bug.cgi?id=48534 --- Comment #2 from Hans Leidekker <hans@meelstraat.net> --- (In reply to Anastasius Focht from comment #0)
Hello folks,
extracted/continuation from bug 44618
The MSXML 6.0 package is part of MindManager Pro v7.0 installer (app is 32-bit). It fails in default 64-bit WINEPREFIX as the MSXML6 redistributable package is only for 32-bit.
--- snip --- $ WINEDEBUG=+msgbox wine ./MM70-E-429_Pro.exe ... 0077:trace:msgbox:MSGBOX_OnInit L"This MSXML6.0 package is not supported on the current processor type." 0077:err:msi:ITERATE_Actions Execution halted, action L"LaunchConditions" returned 1603 ... 0039:err:msi:ITERATE_Actions Execution halted, action L"RunMSXML6Setup" returned 1627 ... 0039:err:msi:ITERATE_Actions Execution halted, action L"ExecuteAction" returned 1627 --- snip ---
MSXML6 package 'LaunchCondition' is indeed:
--- snip --- (NOT VersionNT64) [WrongPackage] --- snip ---
If I run this installer on 64-bit Windows 10 it completes immediately and returns success. It seems that there's special handling for this installer, possibly because MSXML6.0 is shipped with the OS. -- 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.
http://bugs.winehq.org/show_bug.cgi?id=48534 --- Comment #3 from Anastasius Focht <focht@gmx.net> --- Hello Hans, thanks for the test. It seems the 32-bit MSXML 6.0 redist installer skips itself on Vista+ via a custom action. The package sequences a custom action 'SkipInstallCA' (condition 'VersionNT>502') before 'LaunchConditions': Dumping of relevant msi installer tables: 'InstallExecuteSequence' table: --- snip --- Action Condition Sequence SkipInstallCA VersionNT>502 1 LaunchConditions 2 --- snip --- 'CustomAction' table: --- snip --- SkipInstallCA 1 redistca SkipInstall --- snip --- 'LaunchCondition' table: --- snip --- (NOT VersionNT64) [WrongPackage] --- snip --- That custom action 'SkipInstall' (redistca.dll) is a stub that unconditionally returns 0x103 = ERROR_NO_MORE_ITEMS (259). Microsoft documentation, custom action return values: https://learn.microsoft.com/en-us/windows/win32/msi/custom-action-return-val... ("Custom Action Return Values") --- snip --- ERROR_NO_MORE_ITEMS Skip remaining actions, not an error. --- snip --- So the sequence must stop at 'SkipInstallCA' with success on Vista and newer ('VersionNT>502'), regardless of prefix bitness. Wine instead continues to 'LaunchConditions'. That is only fatal in a 64-bit prefix, where 'VersionNT64' is set, '(NOT VersionNT64)' is false and yields [WrongPackage] -> 1603. In a 32-bit prefix 'VersionNT64' is undefined, the condition passes, and the same misbehaviour goes unnoticed. Looks like Wine msi swallows the return code: https://gitlab.winehq.org/wine/wine/-/blob/wine-11.16/dlls/msi/custom.c#L322 --- snip --- static UINT custom_get_thread_return( MSIPACKAGE *package, HANDLE thread ) { DWORD rc = 0; GetExitCodeThread( thread, &rc ); switch (rc) { case ERROR_FUNCTION_NOT_CALLED: case ERROR_SUCCESS: case ERROR_INSTALL_USEREXIT: case ERROR_INSTALL_FAILURE: return rc; case ERROR_NO_MORE_ITEMS: return ERROR_SUCCESS; case ERROR_INSTALL_SUSPEND: ACTION_ForceReboot( package ); return ERROR_SUCCESS; default: ERR( "invalid Return Code %lu\n", rc ); return ERROR_INSTALL_FAILURE; } } --- snip --- ERROR_NO_MORE_ITEMS becomes ERROR_SUCCESS, hence ITERATE_Actions() continues with the next action and runs 'LaunchConditions': https://gitlab.winehq.org/wine/wine/-/blob/wine-11.16/dlls/msi/action.c#L404 --- snip --- 0168:trace:msi:ACTION_PerformAction Performing action (L"SkipInstallCA") 0168:trace:msi:ACTION_PerformAction Performing action (L"LaunchConditions") 0168:err:msi:ITERATE_Actions Execution halted, action L"LaunchConditions" returned 1603 --- snip --- You need to propagate ERROR_NO_MORE_ITEMS. MSI_IterateRecords() already maps it back to ERROR_SUCCESS, so the sequence ends successfully: https://source.winehq.org/git/wine.git/blob/wine-11.16:/dlls/msi/msiquery.c#... --- snip --- if( r == ERROR_NO_MORE_ITEMS ) r = ERROR_SUCCESS; --- snip --- The existing Wine test case already exercises ERROR_NO_MORE_ITEMS but only checks the overall return value. It should also verify that a subsequent sequence action is not executed. $ wine --version wine-11.16 Regards -- 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.
participants (2)
-
WineHQ Bugzilla -
WineHQ Bugzilla