[pkg-wine-party] Bug#762058: WoW64 (mostly) working

Jens Reyer jre.winesim at gmail.com
Fri Dec 11 21:56:44 UTC 2015


control: tags -1 + patch

Hi,

to my great surprise our wine binaries already seem to support WoW64,
(maybe only mostly, see below). I.e. installing and running 32-bit
applications in 64-bit prefixes works. Or is there more to it?

Previously I thought that wine64 has to be linked into wine32 during
build. Now I realized that it seems to work as long as wine32 and
wine64 are installed. Also I didn't see anything indicating this in the
ubuntu/winehq packaging, which is WoW64 enabled.

A definitely wrong assumption of mine was that WoW64 has a separate
winearch. But it is "win64".

So I tried the wine script with the patch below. Basically I just switch
the order of wine32 and wine64 in there. The patch works best with the
automatic-detect-patch (#769234), but that is not necessary.
This solves the problem for 64-bit apps with PE32-installers.


SUCCESS:

I successfully installed the following apps in the same 64-bit prefix. I
started them (using the Desktop launcher if available) concurrently with
the same wineserver. It all happened in ~/.wine64, no ~/.wine was
created.:
- Daggerfall (16-bit, dosbox is installed)
- SteuerSparErklärung (32-bit)
- Steam (32-bit) [2]
- 7z (64-bit, msi installer)
- ImageMagick (64-bit version with a PE32-installer)

[1] App and Launcher fail to start, but this issue also exists with the
official winehq packages.
[2] Starts, but can't login, same with winehq packages.


CAVEATS:

However installing EA's Origin (32-bit) failed, while this works with
the winehq packages. I don't know if this is WoW64 related.

winetricks, without a WINEPREFIX specified, starts correctly in 64-bit
mode, but creates ~/.wine, instead of ~/.wine64. Note that generally the
64-bit mode of winetricks isn't perfect yet.

Greets
jre


=======================================
diff --git a/debian/scripts/wine b/debian/scripts/wine
index a1463c9..3bf4117 100755
--- a/debian/scripts/wine
+++ b/debian/scripts/wine
@@ -32,15 +32,15 @@ elif [ -f "$1" ] &&
     WINEARCH=win64
 fi
 
-if test -x $wine32 -a "$WINEARCH" != "win64"; then
-    wine=$wine32
-elif test -x $wine64; then
+if test -x $wine64 -a "$WINEARCH" != "win32"; then
     wine=$wine64
-    if [ "$(dpkg --print-architecture)" = "amd64" -a "$(dpkg --print-foreign-architectures | grep -cx "i386")" -ne 1 ]; then
+    if [ ! -x "$wine32" -a "$(dpkg --print-architecture)" = "amd64" -a "$(dpkg --print-foreign-architectures | grep -cx "i386")" -ne 1 ]; then
         echo "it looks like multiarch needs to be enabled.  as root, please"
         echo "execute \"dpkg --add-architecture i386 && apt-get update &&"
         echo "apt-get install $(echo $name | sed s/wine/wine32/)\""
     fi
+elif test -x $wine32 -a "$WINEARCH" != "win64"; then
+    wine=$wine32
 else
     echo "error: unable to find wine executable.  this shouldn't happen."
     exit 1



More information about the pkg-wine-party mailing list