winetricks
winetricks copied to clipboard
Installing ie8 fails (metadata isn't regenerated if switching between 64-bit/32-bit prefixes)
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?
Can you please try with master? There was a similar issue fixed a while back (search is failing me at the moment).
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
------------------------------------------------------
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 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
.
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 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
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 Thanks for the clarification. I just tested, and indeed I don't use the GUI there is no problem.