https://bugs.winehq.org/show_bug.cgi?id=51790
--- Comment #1 from Dmitry Timoshkov dmitry@baikal.ru --- (In reply to Dmitry Timoshkov from comment #0)
MSI relies on GetBinaryType() to return correct architecture for a custom action DLL, however GetBinaryType() started to intentionally fail for DLL files. This for instance leads to inability to run a 32-bit action from a 64-bit installer process.
This essentially breaks any installer in a WoW64 Wine prefix. This bug should probably have 'major' severity set.
Whist it's a pretty serious regression, there was no attempt to fix it yet.
In case it's not recognizable on the first sight, here is the relevant commit:
commit 02268cb290493c899b56996405ca7c65a8046e3c Author: Alexandre Julliard julliard@winehq.org Date: Thu Jul 1 10:47:08 2021 +0200
kernel32: Fix the DLL check in GetBinaryTypeW().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51375 Signed-off-by: Alexandre Julliard julliard@winehq.org
diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c index adf6b3c9a60..415f7f65714 100644 --- a/dlls/kernel32/module.c +++ b/dlls/kernel32/module.c @@ -190,7 +190,7 @@ BOOL WINAPI GetBinaryTypeW( LPCWSTR name, LPDWORD type ) status = NtQuerySection( mapping, SectionImageInformation, &info, sizeof(info), NULL ); CloseHandle( mapping ); if (status) return FALSE; - if (!(info.ImageCharacteristics & IMAGE_FILE_DLL)) return FALSE; + if (info.ImageCharacteristics & IMAGE_FILE_DLL) return FALSE; switch (info.Machine) { case IMAGE_FILE_MACHINE_I386: