[Bug 43864] Games for Windows - Live 3.5 installer fails in 64-bit WINEPREFIX ( 64-bit msi package needs relegation to 64-bit msi server when run from 32-bit client process )

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Oct 9 06:45:20 CDT 2017


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
                URL|                            |https://www.microsoft.com/e
                   |                            |n-us/download/details.aspx?
                   |                            |id=5549
           Keywords|                            |download, Installer
          Component|-unknown                    |msi
            Summary|Crash when installing Games |Games for Windows - Live
                   |for Windows - Live 3.5 from |3.5 installer fails in
                   |stand-alone installer       |64-bit WINEPREFIX (64-bit
                   |                            |msi package needs
                   |                            |relegation to 64-bit msi
                   |                            |server when run from 32-bit
                   |                            |client process)
                 CC|                            |focht at gmx.net

--- Comment #7 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

likely a dupe of already existing 32/64-bit MSI server + 32/64-bit custom
action server bugs (such as bug 30713).

--- snip ---
$ cabextract -l gfwlivesetup.exe 
Viewing cabinet: gfwlivesetup.exe
 File size | Date       Time     | Name
-----------+---------------------+-------------
    642712 | 11.04.2011 13:03:54 | gfwlivesetup.exe
   3371008 | 11.04.2011 13:03:54 | GFWLClient.msi
  21598208 | 11.04.2011 13:03:56 | xLiveRedist.msi
   4649472 | 18.03.2011 15:51:26 | wllogin_32.msi
   6575616 | 18.03.2011 15:51:26 | wllogin_64.msi
  43000680 | 18.03.2011 15:51:24 | dotNetFx40_Client_x86_x64.exe

All done, no errors.
--- snip ---

You used a 64-bit WINEPREFIX for installation.

Template summary property for 'wllogin_64.msi' 64-bit package:

--- snip ---
$ wine MsiInfo.Exe wllogin_64.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 = Installation Database
[ 3][/j] Subject = Windows Live ID Sign-in Assistant
[ 4][/a] Author = Microsoft Corporation
[ 5][/k] Keywords = Installer,MSI,Database,Windows Live, Login, Passport
[ 6][/o] Comments = Windows Live ID Sign-in Assistant
[ 7][/p] Template(MSI CPU,LangIDs) = x64;1033
[ 9][/v] Revision = {AFAEFABE-FB0E-48F0-8262-9D5F91A9EEF1}
[12][/r] Created = 2009/08/18 14:54:44
[13][/q] LastSaved = 2009/08/18 14:54:44
[14][/g] Pages(MSI Version Used) = 200
[15][/w] Words(MSI Source and Elevation Prompt Type) = 2
[18][/n] Application = Windows Installer XML v2.0.4701.0 (candle/light)
[19][/u] Security = 2
--- 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.

Dump of 'Component' table using 'ORCA':

--- snip ---
Component    ComponentId    Directory_    Attributes    Condition    KeyPath
s72    S38    s72    i2    S255    S72
..
CP_WLIDPROV.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C   
{31D594C9-E4D8-485D-9341-DD87AD6ACB49}   
DIR_WLIDSSP2.1312FADD_90E2_487F_B4BC_5B3F1469FB3C    320    (VersionNT64>=601) 
  PPCRL_WLIDPROV.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C
CP_WLIDSVC.EXE.1312FADD_90E2_487F_B4BC_5B3F1469FB3C   
{AEFCEE37-526B-4956-96F2-C6E2330E2AC7}   
DIR_WLIDSSP2.1312FADD_90E2_487F_B4BC_5B3F1469FB3C    256       
PPCRL_WLIDSVC.EXE.1312FADD_90E2_487F_B4BC_5B3F1469FB3C
CP_LIVESSP.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C   
{FDD48C03-DF03-4713-88F2-D03E041EC765}   
System64Folder.1312FADD_90E2_487F_B4BC_5B3F1469FB3C    320   
(VersionNT64>=601)    PPCRL_LIVESSP.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C
CP_PPCRLCONFIG.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C   
{39CD30BA-09D5-4023-9D08-88ACF3FEE453}   
DIR_PRODUCTION.1312FADD_90E2_487F_B4BC_5B3F1469FB3C    264   
(SDKINSTALL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C<>"1") AND
((PERUSER.1312FADD_90E2_487F_B4BC_5B3F1469FB3C="0") OR
(PERUSER.1312FADD_90E2_487F_B4BC_5B3F1469FB3C=""))   
SDKCOMPONENTS_PPCRL_PPCRLCONFIG.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C
CP_PPCRLUI.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C   
{D55F471E-4BC7-439C-AEF0-2EE43E5939CB}   
DIR_PRODUCTION.1312FADD_90E2_487F_B4BC_5B3F1469FB3C    264       
SDKCOMPONENTS_PPCRL_WLIDUI.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C
CP_MSIDCRL40.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C   
{DD2F03D8-C746-496C-8F0C-BB0815BA24EA}   
DIR_PPCRL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C    256       
SDKCOMPONENTS_PPCRL_MSIDCRL40.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C
CP_WLLOGIN.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C   
{320678B6-5709-4ADC-8373-6B9E088B5E09}   
DIR_PPCRL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C    256       
SDKCOMPONENTS_PPCRL_IDBHO.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C

...
--- snip ---

msidbComponentAttributes64bit -> 256

Good information resource:

http://csi-windows.com/blog/all/27-csi-news-general/263-how-windows-installer-processes-packages-on-64-bit-windows
("How Windows Installer Processes Packages on 64-bit Windows")

32-bit client app process (bootstrapper):

--- snip ---
...
00b3:Call KERNEL32.CreateProcessA(00000000,0100b0c0
"c:\\4115ea1d1742d1914fda\\gfwlivesetup.exe",00000000,00000000,00000000,00000020,00000000,0014bbf0
"c:\\4115ea1d1742d1914fda",0033fe40,0033fe0c) ret=01005856
...
00b3:trace:process:create_process_impl starting
L"c:\\4115ea1d1742d1914fda\\gfwlivesetup.exe" as Win32 binary
(0x1000000-0x10a0000, arch 014c)
...
00b6:Call KERNEL32.__wine_kernel_init() ret=7bc69c56
00b6:trace:process:init_current_directory starting in
L"c:\\4115ea1d1742d1914fda\\" 0x20
00b6:trace:process:__wine_kernel_init starting process
name=L"c:\\4115ea1d1742d1914fda\\gfwlivesetup.exe"
argv[0]=L"c:\\4115ea1d1742d1914fda\\gfwlivesetup.exe"
00b3:trace:process:create_process_impl started process pid 00b5 tid 00b6
00b3:Ret  KERNEL32.CreateProcessA() retval=00000001 ret=01005856
...
00bc:Call msi.MsiInstallProductW(0036e144
L"c:\\4115ea1d1742d1914fda\\wllogin_64.msi",0036c918
L"REBOOT=\"ReallySuppress\" ") ret=0103b6a4
00bc:trace:msi:MsiInstallProductW L"c:\\4115ea1d1742d1914fda\\wllogin_64.msi"
L"REBOOT=\"ReallySuppress\" "
00bc:trace:msi:MSI_OpenPackageW L"c:\\4115ea1d1742d1914fda\\wllogin_64.msi"
0xe4cae0
...
00bc:trace:msi:msi_get_property returning
L"c:\\4115ea1d1742d1914fda\\wllogin_64.msi" for property L"OriginalDatabase"
...
00bc:trace:msi:cabinet_copy_file extracting
L"SDKCOMPONENTS_PPCRL_IDBHO.DLL.1312FADD_90E2_487F_B4BC_5B3F1469FB3C" ->
L"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows
Live\\WindowsLiveLogin.dll"
00bc:Call KERNEL32.CreateFileW(01127818 L"C:\\Program Files (x86)\\Common
Files\\Microsoft Shared\\Windows
Live\\WindowsLiveLogin.dll",c0000000,00000000,00000000,00000002,00000080,00000000)
ret=7e15d4c1
00bc:Ret  KERNEL32.CreateFileW() retval=000000d0 ret=7e15d4c1
...
00bc:trace:msi:ITERATE_SelfRegModules Registering L"C:\\Program Files
(x86)\\Common Files\\Microsoft Shared\\Windows Live\\WindowsLiveLogin.dll"
...
00bc:Call KERNEL32.CreateProcessW(00000000,0110b940 L"regsvr32.exe
\"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows
Live\\WindowsLiveLogin.dll\"",00000000,00000000,00000000,00000000,00000000,00000000,00e4c408,00e4c44c)
ret=7e12553d
00bc:trace:process:create_process_impl app (null) cmdline L"regsvr32.exe
\"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows
Live\\WindowsLiveLogin.dll\""
00bc:trace:process:find_exe_file looking for L"regsvr32.exe"
00bc:trace:process:find_exe_file Trying native exe
L"C:\\windows\\system32\\regsvr32.exe"
00bc:trace:process:create_process_impl starting
L"C:\\windows\\system32\\regsvr32.exe" as Win32 binary (0x10000000-0x1000b000,
arch 014c, fakedll)
...
00c4:Call KERNEL32.__wine_kernel_init() ret=7bc69c56
00c4:trace:process:init_current_directory starting in
L"c:\\4115ea1d1742d1914fda\\" 0x20
00c4:trace:process:__wine_kernel_init starting process
name=L"C:\\windows\\system32\\regsvr32.exe" argv[0]=L"regsvr32.exe"
...
00bc:trace:process:create_process_impl started process pid 00c3 tid 00c4
...
00c4:Call KERNEL32.LoadLibraryExW(001158e6 L"C:\\Program Files (x86)\\Common
Files\\Microsoft Shared\\Windows Live\\WindowsLiveLogin.dll",00000000,00000008)
ret=7eff5b70
...
00c4:Ret  KERNEL32.LoadLibraryExW() retval=00000000 ret=7eff5b70
...
regsvr32: Failed to load DLL 'C:\Program Files (x86)\Common Files\Microsoft
Shared\Windows Live\WindowsLiveLogin.dll'

00bc:Ret  KERNEL32.CreateProcessW() retval=00000001 ret=7e12553d
...
--- snip ---

-> product install for 64-bit package incorrectly handled on 32-bit client side

Same for custom actions:

--- snip ---
...
00bc:trace:msi:ACTION_CustomAction Handling custom action
L"RgWLIDProv.D7E3D3D4_C059_4F60_8B26_AED871BD74F7" (c22
L"SystemFolder.D7E3D3D4_C059_4F60_8B26_AED871BD74F7" L"regsvr32.exe /s
\"[#PPCRL_WLIDPROV_32.DLL.D7E3D3D4_C059_4F60_8B26_AED871BD74F7]\"")
00bc:warn:msi:ACTION_CustomAction msidbCustomActionTypeNoImpersonate not
handled
00bc:trace:msi:msi_get_property 0x1dcb30
L"RgWLIDProv.D7E3D3D4_C059_4F60_8B26_AED871BD74F7" (nil) 0xe4c3b4
...
00bc:trace:msi:HANDLE_CustomType34 cmd L"regsvr32.exe /s \"C:\\Program Files
(x86)\\Common Files\\Microsoft Shared\\Windows Live\\WLIDPROV.DLL\"" dir
L"C:\\windows\\syswow64\\"
00bc:Call KERNEL32.CreateProcessW(00000000,01108ef8 L"regsvr32.exe /s
\"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows
Live\\WLIDPROV.DLL\"",00000000,00000000,00000000,00000000,00000000,01103ae8
L"C:\\windows\\syswow64\\",00e4c2fc,00e4c2ec) ret=7e13e601
00bc:trace:process:create_process_impl app (null) cmdline L"regsvr32.exe /s
\"C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows
Live\\WLIDPROV.DLL\""
...
00bc:trace:process:create_process_impl starting
L"C:\\windows\\system32\\regsvr32.exe" as Win32 binary (0x10000000-0x1000b000,
arch 014c, fakedll)
...
00eb:Call KERNEL32.__wine_kernel_init() ret=7bc69c56
00eb:trace:process:init_current_directory starting in
L"C:\\windows\\syswow64\\" 0x20
00eb:trace:process:__wine_kernel_init starting process
name=L"C:\\windows\\system32\\regsvr32.exe" argv[0]=L"regsvr32.exe"
00bc:trace:process:create_process_impl started process pid 00ea tid 00eb
00bc:Ret  KERNEL32.CreateProcessW() retval=00000001 ret=7e13e601
...
00bc:err:msi:execute_script Execution of script 0 halted; action
L"RgWLIDProv.D7E3D3D4_C059_4F60_8B26_AED871BD74F7" returned 1627
...
--- snip ---

The 64-bit package install should be handed over from 32-bit app/client process
to 64-bit msi server process (which in turn also uses 64-bit CA server).

You can work around by using a 32-bit WINEPREFIX (WINEARCH=win32) unless
whatever game you need to install forces you to use 64-bit.

$ sha1sum gfwlivesetup.exe 
dcac0e121b2ddf97e0720b470257cd7bf38ac120  gfwlivesetup.exe

$ du -sh gfwlivesetup.exe 
71M    gfwlivesetup.exe

$ wine --version
wine-2.18-97-gfb8226f639

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