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