I am confused between x86 and x64

Questions about Wine on Linux
Locked
User avatar
Livy
Level 1
Level 1
Posts: 9
Joined: Sat May 04, 2019 8:25 am

I am confused between x86 and x64

Post by Livy »

Hello, I've been trying my luck with my programs. Even simplest ones like messaging crash a lot. :( However, I still seek some more clarifications before trying again.
  1. Wine itself has an x64 version. But what is the purpose of this line anyway: sudo dpkg --add-architecture i386
  2. The manual and FAQs talk a lot about 32-bit and 64-bit wineprefix. Still, no one bothers to explain the differences between them. I had to make an assumption that 32-bit wineprefix corresponds to an x86 Windows installation, and 64-bit wineprefix is an x64 installation; and that x64 programs cannot be installed on an x86 wineprefix. Is that right, and is there any other differences?
  3. If I create a 32-bit wineprefix as .wine32, and a 64-bit one as .wine64 (or maybe just .wine), which one shall be used when I double click an .exe file from a random place? Which wineprefix is the default and how to change it?
  4. Lastly, I would like to have a way to prevent file type associations as a security measure. That is, disable running all files by double clicking, and force all users to either use the .desktop files I create or explicitly invoke Wine from the Terminal (not many know how to do that, and those do usually know what they are doing). Is there anyway to do that? I am using Ubuntu / elementary OS / Linux Mint.
jkfloris
Level 12
Level 12
Posts: 3136
Joined: Thu Aug 14, 2014 10:10 am

Re: I am confused between x86 and x64

Post by jkfloris »

1. If you enable the 32-bit architecture, you are able to install 32-bit packages. A lot of Windows software is still 32-bit. If you want to run these programs, you need 32-bit support.

2. You are right.
32-bit Wineprefix (i386 enabled) -> 32-bit Windows
64-bit Wineprefix (i386 enabled) -> WoW64 Windows
64-bit Wineprefix (i386 disabled) -> 64-bit Windows

3. ~/.wine is the default Wineprefix.

4. winecfg -> Desktop Integration -> MIME types -> Disable "Manage file associations"
Cybermax
Level 4
Level 4
Posts: 218
Joined: Fri Dec 01, 2017 5:26 pm

Re: I am confused between x86 and x64

Post by Cybermax »

Livy wrote:Hello, I've been trying my luck with my programs. Even simplest ones like messaging crash a lot. :( However, I still seek some more clarifications before trying again.
  1. Wine itself has an x64 version. But what is the purpose of this line anyway: sudo dpkg --add-architecture i386
  2. The manual and FAQs talk a lot about 32-bit and 64-bit wineprefix. Still, no one bothers to explain the differences between them. I had to make an assumption that 32-bit wineprefix corresponds to an x86 Windows installation, and 64-bit wineprefix is an x64 installation; and that x64 programs cannot be installed on an x86 wineprefix. Is that right, and is there any other differences?
  3. If I create a 32-bit wineprefix as .wine32, and a 64-bit one as .wine64 (or maybe just .wine), which one shall be used when I double click an .exe file from a random place? Which wineprefix is the default and how to change it?
  4. Lastly, I would like to have a way to prevent file type associations as a security measure. That is, disable running all files by double clicking, and force all users to either use the .desktop files I create or explicitly invoke Wine from the Terminal (not many know how to do that, and those do usually know what they are doing). Is there anyway to do that? I am using Ubuntu / elementary OS / Linux Mint.
jfkloris has some good points, and to perhaps clarify a wee bit more, there is really no such thing as a "pure 64-bit wineprefix", just as there is no such thing as a "pure 64-bit windows" (although i think you can uninstall syswow64 on Windows 2008 server and such). 64-bit windows = syswow64 if you use those terms.

So, yes, your assumptions is right :) And if you have a 32-bit linux install, you cannot run 64-bit wine, and thus no syswow64 windows :)

Linux vs Windows:
Linux i386 = 32-bit libraries = x32 Windows = NO 64-bit
Linux amd64 = 64-bit libraries = No such windows version
Linux amd64 + "--add-architecture i386" = 64-bit libraries and 32-bit libraries = x64 Windows (syswow64). BOTH 32 and 64-bit.

To change the default wineprefix i guess you may need some patchwork and a recompile, but depending on how your distro handles mime associations you can use aliases or otherwise use: WINEPREFIX=/your/prefix (eg. WINEPREFIX=/home/yourusername/.wine64 ) when running wine.
You can add that to the .bashrc for your user, and this will be used "by default".

eg:

Code: Select all

WINEPREFIX=/home/youruser/.wine64 wineboot -u
will create a new 64-bit wineprefix in the .wine64 folder.

To create a 32-bit:

Code: Select all

WINEARCH=win32 WINEPREFIX=/home/youruser/.wine32 wineboot -u
will create a new 32-bit wineprefix.
User avatar
Livy
Level 1
Level 1
Posts: 9
Joined: Sat May 04, 2019 8:25 am

Re: I am confused between x86 and x64

Post by Livy »

@jkfloris, Cybermax
Thank you guys a lot. Looks like I need to invest some time on bash scripting before trying to edit the .bashrc file.

Um, I still don't understand if I install a program inside a 32-bit Wineprepix (~/.wine32), while having a 64-bit Wineprefix (~/.wine by default), which prefix would the program run when I just double click it? Even if it is installed inside the 32-bit Wineprefix, I suspect the default double clicking action cannot tell where the file is, and just use the default 64-bit ~/.wine
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: I am confused between x86 and x64

Post by Bob Wya »

Livy wrote:@jkfloris, Cybermax
Thank you guys a lot. Looks like I need to invest some time on bash scripting before trying to edit the .bashrc file.

I suspect the default double clicking action cannot tell where the file is, and just use the default 64-bit ~/.wine
Just like with Windows you can run an installed executable from a different / separate installation of Windows.
Wine reads the env variable WINEPREFIX , if this is unset then Wine will always default back to using:

Code: Select all

"${HOME}/.wine"
It's a classic "gotcha" for new users of Wine! :lol:

Just to re-iterate:
  • a 32-bit WINEPREFIX behaves like a 32-bit Windows installation (when used with a multilib, or pure 32-bit, build of Wine)
  • a 64-bit WINEPREFIX behaves like a 64-bit Windows installation (when used with a multilib build of Wine)
In fact I've found that, when using some games under Wine...
I had to create a 64-bit WINEPREFIX, in order to be able to use save game files, from a 64-bit Windows installation.

Bob
jkfloris
Level 12
Level 12
Posts: 3136
Joined: Thu Aug 14, 2014 10:10 am

Re: I am confused between x86 and x64

Post by jkfloris »

I suspect the default double clicking action cannot tell where the file is, and just use the default 64-bit ~/.wine
If the program you have installed in the 32-bit Wineprefix creates a shortcut on your desktop or as a start menu entry,
Wine will add the right Wineprefix variable to the shortcut.
User avatar
Livy
Level 1
Level 1
Posts: 9
Joined: Sat May 04, 2019 8:25 am

Re: I am confused between x86 and x64

Post by Livy »

jkfloris wrote:4. winecfg -> Desktop Integration -> MIME types -> Disable "Manage file associations"
Sorry but I have to bump this thread up. Disabling Manage file associations in wincfg does not work. Files which have MIME type of application/x-ms-dos-executable are stilled handled by Wine Windows Program Loader. How can I remove it?

Image

The screenshot was taken from my Linux Mint Xfce. The MIME Type Editor allows me to change, but not remove the default application. I would like to have a universal way (eg: command line, configuration file edit...) to do that in all Linux distros.
Locked