winetricks icon indicating copy to clipboard operation
winetricks copied to clipboard

Installing ie8 fails (metadata isn't regenerated if switching between 64-bit/32-bit prefixes)

Open etairi opened this issue 4 years ago • 8 comments

I tried to install ie8 in win32 prefix on Ubuntu 20.04 with wineprefix installed from the repository of Ubuntu, but I encounter the following error:

Executing mkdir -p /home/etairi
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Using winetricks 20200412 - sha256sum: 7651c93e39fcb080483c38836513bf912273a87ea97d137f6b958ed3d9628c3d with wine-5.0 (Ubuntu 5.0-3ubuntu1) and WINEARCH=win64
winetricks GUI enabled, using zenity 3.32.0
Executing mkdir -p /home/etairi/.local/share/wineprefixes
Executing w_do_call ie8
Executing mkdir -p /home/etairi/.local/share/wineprefixes
Executing load_ie8 
Setting Windows version to winxp
Executing wine regedit C:\windows\Temp\_i686\set-winver.reg
------------------------------------------------------
Running /usr/bin/wineserver -w. This will hang until all wine processes in prefix=/home/etairi/.local/share/wineprefixes/i686 terminate
------------------------------------------------------
Using builtin override for following DLLs: iexplore.exe
Executing wine regedit C:\windows\Temp\_i686\override-dll.reg
Executing wine iexplore -unregserver
Executing w_do_call msls31
Executing mkdir -p /home/etairi/.local/share/wineprefixes
Executing load_msls31 
Executing cabextract -q --directory=/home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/temp/_i686 /home/etairi/.cache/winetricks/msls31/InstMsiW.exe
Executing cp -f /home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/temp/_i686/msls31.dll /home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/system32
------------------------------------------------------
msls31 install completed, but installed file /home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/syswow64/msls31.dll not found
------------------------------------------------------

Please note that by default it opens the win64 prefix, but then I select my win32 called i686 and try to install there. But it fails, and there is no syswow64 in my i686 prefix, which I guess makes sense as it is 32-bit architecture. Any ideas what the problem might be?

etairi avatar Oct 02 '20 07:10 etairi

Can you please try with master? There was a similar issue fixed a while back (search is failing me at the moment).

austin987 avatar Oct 02 '20 18:10 austin987

I just tried purging my winetricks installation, and using master, and also re-created the prefix, but still same issue:

Executing mkdir -p /home/etairi
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Using winetricks 20200412-next - sha256sum: da0e556b7119e7ad9309441d24461d9dde3400c984bca27dbb75b1a6ccb2cbe8 with wine-5.0 (Ubuntu 5.0-3ubuntu1) and WINEARCH=win64
winetricks GUI enabled, using zenity 3.32.0
Executing mkdir -p /home/etairi/.local/share/wineprefixes
------------------------------------------------------
Creating WINEPREFIX "/home/etairi/.local/share/wineprefixes/i686" with WINEARCH=win32
------------------------------------------------------
wine: created the configuration directory '/home/etairi/.local/share/wineprefixes/i686'
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
0012:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0012:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0012:err:ole:get_local_server_stream Failed: 80004002
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
0014:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0014:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0014:err:ole:get_local_server_stream Failed: 80004002
Could not find Wine Gecko. HTML rendering will be disabled.
wine: configuration in L"/home/etairi/.local/share/wineprefixes/i686" has been updated.
Executing w_do_call ie8
Executing mkdir -p /home/etairi/.local/share/wineprefixes
Executing load_ie8 
Setting Windows version to winxp
Executing wine regedit C:\windows\Temp\_i686\set-winver.reg
------------------------------------------------------
warning: Running /usr/bin/wineserver -w. This will hang until all wine processes in prefix=/home/etairi/.local/share/wineprefixes/i686 terminate
------------------------------------------------------
Using builtin override for following DLLs: iexplore.exe
Executing wine regedit C:\windows\Temp\_i686\override-dll.reg
Executing wine iexplore -unregserver
Executing w_do_call msls31
Executing mkdir -p /home/etairi/.local/share/wineprefixes
Executing load_msls31 
Executing cabextract -q --directory=/home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/temp/_i686 /home/etairi/.cache/winetricks/msls31/InstMsiW.exe
Executing cp -f /home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/temp/_i686/msls31.dll /home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/system32
------------------------------------------------------
warning: msls31 install completed, but installed file /home/etairi/.local/share/wineprefixes/i686/dosdevices/c:/windows/syswow64/msls31.dll not found
------------------------------------------------------

etairi avatar Oct 02 '20 22:10 etairi

Hm. I was able to reproduce it once, but not sure what was different. It's not immediately obvious what's wrong from a quick look.

austin987 avatar Oct 05 '20 06:10 austin987

@austin987 There is no syswow64 directory at all inside the win32 prefix. And as you can see it copies the library to system32 directory, but later it searches it inside the non-existent directory syswow64.

etairi avatar Oct 05 '20 09:10 etairi

There's not supposed to be a syswow64 directory in a 32bit prefix. The question is why winetricks thinks it's a 64-bit prefix (in particular, since ie8 requires a 32-bit prefix).

winetricks -v &>> log.txt should give you a better log (though it will be pretty verbose).

austin987 avatar Oct 06 '20 17:10 austin987

@austin987 Yes, that's what I meant, it shouldn't search in syswow64 at all. Here is the log file: https://gist.github.com/etairi/90c453d18dae961f441df32c8bdfed69

etairi avatar Oct 06 '20 20:10 etairi

Thanks, that helps. I see what the problem is, though I'm not sure of a straightforward fix.

Short answer: don't use the gui and this won't be an issue.

Long answer: the issue is installed_file1="${W_SYSTEM32_DLLS_WIN}/msls31.dll". That gets parsed when the script first run, which was run with a 64-bit prefix. Later, when you choose a new 32-bit prefix, the metadata isn't reprocessed, so when the check for the installed file runs, it looks where it expects the file to be for a 64-bit prefix, not a 32-bit one.

austin987 avatar Oct 14 '20 07:10 austin987

@austin987 Thanks for the clarification. I just tested, and indeed I don't use the GUI there is no problem.

etairi avatar Oct 14 '20 09:10 etairi