Try These Steps to Resolve The Problem of Wine Programs Not Working

Why Doesn’t My Program Run?

Put simply, Wine runs Windows software by reverse engineering parts of the Windows operating system for Linux. In the Microsoft world, these components are called DLLs (Dynamic Link Libraries). They provide extra features and capabilities that other programs rely on to work. An example of one is d3d8.dll, which gives programs access to Microsoft’s DirectX 8 gaming capabilities.

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

PlayOnLinux lets you run different versions of Wine that are proven to work with the programs you want to run. It can also automatically supply Wine with native DLLs to help it function better. This is all done under the hood, so you just have to choose what you want to install and then run it.

playonlinux main

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?

If you find PlayOnLinux’s selection of programs lacking, you may have to resort to installing your programs manually. Before you dive in though, you should ask one question: is your Wine in 64-bit mode or 32-bit mode?

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

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 prefix nano

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:

wine --version

wine version

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
chmod 755

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:

./ your-dll

If you enter this command, Winetricks can also show you all the possible DLLs you can install with it:

./ 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

debug wine

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.

Reporting Bugs

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.

wine bug tracker

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.