Why Doesn’t My Program Run?
Suffice to say, there are many DLLs that Wine provides equivalents of. There is a chance that Wine has mistakes in its implementations. Wine might not even have one in the first place! These are the main reasons behind why Windows programs misbehave or refuse to work under Linux. As such, the steps below aim to get Wine’s implementations as close to Windows as possible.
Install Programs With PlayOnLinux
While installing a program using PlayOnLinux almost always ensures smooth running, you might not find what you want in their catalogue. But head to the downloads page and try it out first.
What’s Your Wine Architecture?
Like Windows, both Linux and Wine have different versions of themselves designed for specific computer architectures. You’re probably using a 64-bit version of Linux, and so by default the 64-bit version of Wine.
To check which one you’re using, enter this command:
Afterwards, click on the Windows Version button. You’ll see a list of the different Windows editions Wine can emulate. If you’re using 32-bit Wine, editions older than Windows XP will appear since they were only available in 32-bit mode.
Changing Your Wine Architecture
Even though software designed for 32-bit systems will work on 64-bit versions of Wine, they tend to work better with the 32-bit version instead. Fortunately, changing your Wine architecture is pretty simple:
export WINEARCH=win32 export WINEPREFIX=~/.wine32 winecfg
The first command tells Wine to go in 32-bit mode, while the second tells it where to create its new folder (the ‘.’ at the end makes the folder hidden — you can remove this if you want). Since this folder doesn’t exist, the third command creates it for us.
If you want to run a program using this version of Wine, you’ll need to enter the first two commands before doing so. This can get a bit tedious, so if you want this as your default Wine version, you can create a file to do this automatically for you.
sudo nano /etc/profile.d/wine.sh
Just add the first two commands like you did to create your new Wine folder. You might have to reboot your computer to get these settings to work. After this, you’ll be able to run programs with a simple wine [program] command.
Use the Staging Version of Wine
Wine staging has lots of bug fixes and features that haven’t made it into the mainstream releases. Because of this, you may have a better chance of getting your programs to run if you use it instead. You can find specific instructions on how to do so for your Linux distribution on their website.
For Ubuntu/Mint users, here are the terminal commands you enter:
sudo add-apt-repository ppa:wine/wine-builds sudo apt-get update sudo apt-get install --install-recommends wine-staging winehq-staging
You can check if you’re using Wine staging by entering in this command:
Use Native Windows Components With Winetricks
Wine has the ability to use Windows DLLs alongside their own reverse engineered ones. In many cases, this can aid in better compatibility. To do this however, you need to download them, and explicitly tell Wine to use them. A shell script called Winetricks automates this process so you don’t have to worry about the process.
wget -O winetricks.sh https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks chmod 755 winetricks.sh
The second command makes the script run. Linux prevents random scripts from being executable by default for security reasons. All you have to do now is ask Winetricks to install a specific file in the terminal like so:
If you enter this command, Winetricks can also show you all the possible DLLs you can install with it:
./winetricks.sh dlls list
Different programs rely on different DLLs, so I recommend checking the official Wine application database for some hints on what to install. Just search for your desired software, and you’re bound to see others in the same boat as you.
Check Wine for Errors
If the application you want to run is not in the Wine application database, you can still do a little poking around to take a guess at the problem. For instance, you can take a look at the errors that Wine is producing like this:
wine [program] &> debug.txt
When you run your program in the terminal, any errors that it makes will be sent into the file above. Something like this might help you track down what’s going wrong with Wine. This way, you might be able to install a helpful DLL using Winetricks.
If your program still doesn’t work despite your best efforts, the problem might be in Wine’s code itself. If that’s the case, I recommend submitting a bug report to the WineHQ bug-trackers.
This shouldn’t be necessary in most cases, but if you’re interested in doing so, there are a few things you should keep in mind:
- Be clear in describing your problem, what it is, and how it came about.
- Attach an error file with your report (such as the one above). This makes problems easier to identify for the developers.
- Be polite and courteous! People will be more willing to help if you are.