[Bug 37856] BOINC 64-bit: Print button in installer doesn't do anything (32-bit custom action erroneously executed in 64-bit MSI process)

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Jan 6 15:16:16 CST 2015


https://bugs.winehq.org/show_bug.cgi?id=37856

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at 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 at 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

-- 
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