tl;dr wine allows you to use heidiSQL on a macos machine.

About

From time to time I miss a Win32 or Win64 application on macos. Obviously we cannot simply run them out of the box on another operating system. For this we need Wine. It is an free open source tool that maps the commands from a Win32 or Win64 program to those available on the host machine. From a user perspective it feels much like an emulator so you can simply start a program without the need of recompiling or a virtual machine.

In this article I like to summarize the steps necessary to run Win32 or Win64 applications on macos using wine and how to integrate them nicely into your system.

As an example I take the incredible tool heidiSQL.

Why HeidiSQL?

It is an administration tool for MySQL and MariaDB databases and an excellent example that even complex applications can work well using wine.

Here are the things I personally love about it:

  • Support for MySQL and MariaDB databases
  • Many connection options and the ability to save credentials
  • You can edit virtually every aspect of your database via UI
  • Inspect and modify databases
  • Create, modify, rename and delete tables using a clever UI
  • High quality query editor
  • Smart syntax highlight and context aware code completion
  • Very useful UI tools like multi-column-order-sorting
  • Export query results to CVS, JSON and friends
  • Inspect all changes that were made in the sql query history
  • Manage database users and their rights using dialogs
  • Export and import databases or tables in many formats
  • Many small but clever UI decisions that show a long history of excellent open source work.
  • 100% open source, no strings attached.
  • …and a lot more

I really like it and it’s too good to not have it.

Required tools

To install wine and later HeidiSQL I suggest to use the following setup:

Tool Desc
homebrew A macos package manger which helps installing terminal and UI programs. Similar to what we know and love in Linux with apt-get and friends.
xquartz This is required for the UI level of the wine
wine The API translation layer that allows macos to run Win32 or Win64 applications natively.
Script Editor of macos It is part of macos and is already installed. We use this to generate a start script and let HeidiSQL look like a normal application

Be careful. Programs like this might destabilize your operating system. Take your time to familiarize yourself with the software and the potential risks involved before installing it.

Install homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install xquartz:

brew cask install xquartz

Install wine:

brew install wine

Test if wine is working

wine
# should print something like this:
# Usage: wine PROGRAM [ARGUMENTS...]   Run the specified program
#        wine --help                   Display this help and exit
#        wine --version                Output version information and exit

That’s it! If your output looks like this it means wine should work. If you have any trouble check out David Baumgold’s great article about installing wine on macos.

Download and run heidiSQL

With wine running we now can simply download HeidiSQL for Win32. To do that we simply go to the HeidiSQL download page. Here I recommend to download the portable edition 32bit.

Unpack the zip file to a folder in your user directory. For example: ~/winapps/heidisql.

To test if it works open your terminal navigate into the directory and start it like this:

cd ~/winapps/heidisql
wine heidisql.exe

This should run the program and you should see the connection window:

HeidiSQL first screen
HeidiSQL first screen

If you use more than one monitor it can happen that the window doesn’t popup properly. If you cannot see this window don’t be alarmed. Search around a bit to find it. Also note that the first window does not show up in Mission Control.

Create an app container using the Script Editor

Now that we prepared our system to run the application let us create an application container for it. Open the application Script Edit on your mac. It should be shipped with your machine. Create a new script and copy the following line as an Apple Script:

Create a HeidiSQL app in Script Edit
Create a HeidiSQL app in Script Edit

set wine to "\"/usr/local/bin/wine\""
set applocation to "\"$HOME/winapps/heidisql/heidisql.exe\""
do shell script wine & " " & applocation & " > /dev/null 2>&1 &"

If you selected a different location make sure to adjust the script. Also ensure that wine can actually be found at /usr/local/bin/wine. If it’s not at that place try to find it in the terminal using which wine.

Once you are sure all paths are correct hit the big play button. Now HeidiSQL should start. If that works we can close the app again and save the script. When the save dialog pops up make sure to select program as export. Select a filename and save it in your application folder.

Save start script as heidisql.app
Save start script as heidisql.app

We are nearly done. The only thing that is left is the icon.

To fix that we first need to fetch an PNG image which we can use an icon. As time of writing you can find a nice HeidiSQL icon on Wikipedia. Open that file with a browser and copy it into your clipboard. If your browser doesn’t support that I recommend to try Firefox. Once you copied that image select heidisql.app and right click on it to open the context menu. Select Information and select the default icon. Press CMD + V to replace it with the image from your clipboard.

HeidiSQL.app with default icon
HeidiSQL.app with default icon

That’s it! You now can use HeidiSQL on your mac.

Grain of salt

Even though wine is doing a great job in transferring the program into your macos experience in some details you still notice the difference. For example is the shortcut for copy text not CMD + C but CTRL + C. This can get crazy when switching between mac and wine programs. Sometimes HeidiSQL consumes all keyboard input and you need to hit ESC to get it responding normal again. In rare cases, e.g. when importing large databases it tends to freeze and need to be restarted.

Some final words

HeidiSQL is a great tool and an excellent example on how you can actually work productive with wine powered programs. How is your experience with wine or HeidiSQL? Let me know what you think. cschnack@gmx.de.