I wish there was a nicer way to do this, but SystemSupportedProcessorArchitectures is incomplete on ARM64EC even on Windows so there isn't really a cleaner way I can find.
-- v3: msi: Dynamically determine supported package architectures. msi: Assume PLATFORM_INTEL if the template property is missing.
From: Hans Leidekker hans@codeweavers.com
--- dlls/msi/package.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/dlls/msi/package.c b/dlls/msi/package.c index aaf66f31970..294946d16eb 100644 --- a/dlls/msi/package.c +++ b/dlls/msi/package.c @@ -1103,6 +1103,8 @@ static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package ) package->version = msi_suminfo_get_int32( si, PID_PAGECOUNT ); TRACE("version: %d\n", package->version);
+ package->platform = PLATFORM_INTEL; + template = msi_suminfo_dup_string( si, PID_TEMPLATE ); if (!template) return ERROR_SUCCESS; /* native accepts missing template property */
From: Billy Laws blaws05@gmail.com
--- dlls/msi/package.c | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-)
diff --git a/dlls/msi/package.c b/dlls/msi/package.c index 294946d16eb..b8966a0df90 100644 --- a/dlls/msi/package.c +++ b/dlls/msi/package.c @@ -1161,27 +1161,39 @@ static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package ) return ERROR_SUCCESS; }
+static BOOL validate_package_platform( enum platform platform ) +{ + USHORT proc_machine, native_machine; + IsWow64Process2( GetCurrentProcess(), &proc_machine, &native_machine ); + switch (platform) + { + case PLATFORM_INTEL: + return native_machine == IMAGE_FILE_MACHINE_I386 || + native_machine == IMAGE_FILE_MACHINE_AMD64 || + native_machine == IMAGE_FILE_MACHINE_ARM64; + case PLATFORM_X64: + return native_machine == IMAGE_FILE_MACHINE_AMD64 || + native_machine == IMAGE_FILE_MACHINE_ARM64; + case PLATFORM_ARM: + return native_machine == IMAGE_FILE_MACHINE_ARM; + case PLATFORM_ARM64: + return native_machine == IMAGE_FILE_MACHINE_ARM64; + case PLATFORM_INTEL64: + default: + return FALSE; + } +} + static UINT validate_package( MSIPACKAGE *package ) { UINT i;
- if (package->platform == PLATFORM_INTEL64) - return ERROR_INSTALL_PLATFORM_UNSUPPORTED; -#ifndef __arm__ - if (package->platform == PLATFORM_ARM) - return ERROR_INSTALL_PLATFORM_UNSUPPORTED; -#endif -#ifndef __aarch64__ - if (package->platform == PLATFORM_ARM64) + if (!validate_package_platform( package->platform )) return ERROR_INSTALL_PLATFORM_UNSUPPORTED; -#endif - if (package->platform == PLATFORM_X64) - { - if (!is_64bit && !is_wow64) - return ERROR_INSTALL_PLATFORM_UNSUPPORTED; - if (package->version < 200) - return ERROR_INSTALL_PACKAGE_INVALID; - } + + if (package->platform == PLATFORM_X64 && package->version < 200) + return ERROR_INSTALL_PACKAGE_INVALID; + if (!package->num_langids) { return ERROR_SUCCESS;
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=150058
Your paranoid android.
=== debian11b (64 bit WoW report) ===
user32: win.c:4070: Test failed: Expected active window 0000000004A2014A, got 0000000000000000. win.c:4071: Test failed: Expected focus window 0000000004A2014A, got 0000000000000000.
This merge request was approved by Hans Leidekker.