https://bugs.winehq.org/show_bug.cgi?id=37856
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Component|-unknown |msi Summary|BOINC 64-bit: Print button |BOINC 64-bit: Print button |in installer doesn't do |in installer doesn't do |anything |anything (32-bit custom | |action erroneously executed | |in 64-bit MSI process)
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
--- snip --- ... 0023:trace:msi:ACTION_CustomAction Handling custom action L"ISPrint" (1 L"SetAllUsers.dll" L"PrintScrollableText") 0023:trace:msi:HANDLE_CustomType1 Calling function L"PrintScrollableText" from L"C:\users\focht\Temp\msi6cbd.tmp" ... 0027:Call KERNEL32.LoadLibraryW(00089ee4 L"C:\users\focht\Temp\msi6cbd.tmp") ret=7fc5a2285976 ... 0027: create_mapping( access=000f0005, attributes=00000000, protect=00000145, size=00000000, file_handle=009c, objattr={rootdir=0000,sd={},name=L""} ) 0027: create_mapping() = INVALID_IMAGE_FORMAT { handle=0000 } 0027: close_handle( handle=009c ) 0027: close_handle() = 0 0027:Ret KERNEL32.LoadLibraryW() retval=00000000 ret=7fc5a2285976 0027:warn:msi:ACTION_CallDllFunction failed to load dll L"C:\users\focht\Temp\msi6cbd.tmp" (193) 0027:trace:msi:DllThread custom action (27) returned 0 0027:trace:msi:MsiCloseAllHandles 0027:trace:msi:MsiCloseHandle 1 0027:trace:msi:MsiCloseHandle handle 1 destroyed --- snip ---
The custom action dll is 32-bit:
--- snip --- $ file msic5d.tmp msi6cbd.tmp: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows --- snip ---
Template summary property says it's a 64-bit package:
--- snip --- $ wine ./MsiInfo.Exe ./BOINC.msi
MsiInfo V 5.0 Copyright (c) Microsoft Corporation. All Rights Reserved
Class Id for the MSI storage is {000C1084-0000-0000-C000-000000000046}
[ 1][/c] Codepage = 1252 [ 2][/t] Title = BOINC for Windows [ 3][/j] Subject = BOINC [ 4][/a] Author = Space Sciences Laboratory, U.C. Berkeley [ 5][/k] Keywords = BOINC [ 6][/o] Comments = Downloads, executes, and uploads BOINC tasks [ 7][/p] Template(MSI CPU,LangIDs) = AMD64;1033 [ 8][/l] SavedBy = InstallShield [ 9][/v] Revision = {FF1DC089-0A12-4798-A38D-837ECD36E431} [11][/s] Printed = 2014/12/11 20:18:13 [12][/r] Created = 2014/12/11 20:18:13 [13][/q] LastSaved = 2014/12/11 20:18:13 [14][/g] Pages(MSI Version Used) = 200 [15][/w] Words(MSI Source and Elevation Prompt Type) = 0 [16][/h] Characters(MSI Transform) = 0 [18][/n] Application = InstallShield« 2011 - Professional Edition 17 [19][/u] Security = 1 --- snip ---
But that doesn't matter in end - packages are always to be processed as 32-bit by default, even if marked as 64-bit.
Each element which is destined for 64-bit has to have explicit 'msidbComponentAttributes64bit' set (which is the case for various components in this MSI).
The 32-bit bootstrapper setup process kicks off an 64-bit MSI installer process in 64-bit WINEPREFIX:
--- snip --- ... 0009:Call KERNEL32.CreateProcessW(00000000,00161264 L"MSIEXEC.EXE /i "C:\windows\Downloaded Installations\{FF1DC089-0A12-4798-A38D-837ECD36E431}\BOINC.msi" SETUPEXEDIR="Z:\home\focht\Downloads" SETUPEXENAME="boinc_7.4.36_windows_x86_64.exe"",00000000,00000000,00000000,00000020,00000000,00000000,0033c284,0033c2f0) ret=00442f5e ... 0023:Call KERNEL32.__wine_kernel_init() ret=7fc5a8f4ca1e ... 0009:Ret KERNEL32.CreateProcessW() retval=00000001 ret=00442f5e --- snip ---
Since the 32-bit custom action is tried to be executed in the 64-bit process this can't work. Either a 32-bit custom action server has to be kicked off or alternatively the client side has to be executed with 32-bit process.
Likely a dupe of already existing 32/64-bit MSI server + 32/64-bit custom action server bugs.
$ sha1sum boinc_7.4.36_windows_x86_64.exe c2334aa9696f11a3f50dac07d1648c6b77ef9ae2 boinc_7.4.36_windows_x86_64.exe
$ du -sh boinc_7.4.36_windows_x86_64.exe 8.9M boinc_7.4.36_windows_x86_64.exe
$ wine --version wine-1.7.33-146-g102d893
Regards