I am confused between x86 and x64

Questions about Wine on Linux
Post Reply
User avatar
Livy
Level 1
Level 1
Posts: 9
Joined: Sat May 04, 2019 8:25 am
Location: Hanoi, Vietnam

I am confused between x86 and x64

Post by Livy » Thu May 23, 2019 7:45 am

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 6
Level 6
Posts: 704
Joined: Thu Aug 14, 2014 10:10 am

Re: I am confused between x86 and x64

Post by jkfloris » Thu May 23, 2019 11:24 am

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: 195
Joined: Fri Dec 01, 2017 5:26 pm

Re: I am confused between x86 and x64

Post by Cybermax » Fri May 24, 2019 9:25 am

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
Location: Hanoi, Vietnam

Re: I am confused between x86 and x64

Post by Livy » Sat May 25, 2019 4:36 am

@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: 2778
Joined: Sat Oct 16, 2010 7:40 pm
Location: Cambridge
Contact:

Re: I am confused between x86 and x64

Post by Bob Wya » Sat May 25, 2019 5:30 am

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 6
Level 6
Posts: 704
Joined: Thu Aug 14, 2014 10:10 am

Re: I am confused between x86 and x64

Post by jkfloris » Sun May 26, 2019 6:07 am

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
Location: Hanoi, Vietnam

Re: I am confused between x86 and x64

Post by Livy » Fri Aug 09, 2019 4:22 am

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.

Post Reply