WINE, a reimplementation of the Windows API for *NIX-based environments recently celebrated its first stable release. Although it is capable of running a whole host of Windows applications natively on Linux, often specific applications will require a particular tweak (such as overriding a native dll) to make them work. This can lead to conflicts if you run multiple Windows programs under one WINE installation. The solution: create "WINE bottles" for each program you want to install.

This idea is synonymous to how Crossover Office, the commercial component of WINE, manages bottles for programs. This is easy enough to setup and manage yourself, however. First off, start with a fresh WINE installation and run your Windows program installer:

$ mv \~/.wine \~/.wine-backup
$ wine setup.exe

This will create a new .wine directory that contains only this program. Once the installation completes, make any adjustments you need to get this program working. Consulting the Wine App DB is a good place to learn about these tweaks. Once the program is setup, create a new file for launching your program. In this example, I'm using the Windows SFTP client WinSCP:

$ touch \~/.wine/winscp

Now you will want to move this WINE bottle to its own hidden directory, giving it a unique name and then open our script file for editing:

$ mv \~/.wine \~/.wine-winscp
$ nano \~/.wine-winscp/winscp

Paste the following code into the script file, adjusting the paths and filenames as necessary:

WINEPREFIX="/home/user/.wine-winscp" wine
/home/user/.wine-winscp/drive\_c/Program\  
Files/WinSCP/WinSCP.exe

Save the file and make it executable, then try running it:

$ chmod +x \~/.wine-winscp/winscp
$ \~/.wine-winscp/winscp

If you did everything correctly, you should now see your program open up. You can now create a new launcher in the Gnome or KDE menu system you use that points to this script. Repeat this process for every program you want to install in WINE.