Why some App Store apps won't install
I was happily playing around with the appstore, and came across this funny free game called "Hedgewars". Originally a free Linux game, it apparently got ported to the Mac and put in the App Store, just as a slew of Flash-based games (yes, Steve has some 'splainin' to do).
I tried to install Hedgewars on my trusty Mac Mini and got this message saying "This Application can not be installed on this machine":
There was no additional information on what was causing this. So the first thing I did was check out my computer information and the requirements for running this game, which seemed to check out fine:[![](schermafbeelding-2011-01-09-om-00-40-38.png?w=122) ](schermafbeelding-2011-01-09-om-00-40-38.png) | [![](schermafbeelding-2011-01-09-om-12-15-55.png) ](schermafbeelding-2011-01-09-om-12-15-55.png) |
Usually this means that the application is compiled for a different system than you're trying to run it on. This can happen when you have an older generation PowerPC processor and try to run a non-universal-binary Intel application. So we checked the properties on the application, and it looked like OSX had it wrong. It's an Intel app, and we're running an Intel Mac. So what gives?
The next step was to open the Terminal so we could dissect this app on the command line, showing it's inner guts. Apps have all kinds of interesting XML and plist files telling the operating system what to do and how to start it up. Here's what we found:
[sourcecode language="text" light="true" highlight="1,2,8"] rolf@Mac-mini$ cd Hedgewars.app/Contents/MacOS/ rolf@Mac-mini$ ls -l total 21344 -rwxr-xr-x 1 rolf admin 2627208 27 dec 21:39 hedgewars -rwxr-xr-x@ 1 rolf admin 5913164 27 dec 21:37 hedgewars-server -rwxr-xr-x@ 1 rolf admin 2381240 27 dec 21:37 hwengine
rolf@Mac-mini$ file * hedgewars: Mach-O 64-bit executable x86_64 hedgewars-server: Mach-O executable i386 hwengine: Mach-O universal binary with 1 architecture hwengine (for architecture x86_64): Mach-O 64-bit executable x86_64 [/sourcecode]
The Hedgewars package has 3 executables, one 64-bit x86, one i386, and one universal binary which only contains an executable for 64-bit x86. We guess the developers made a bit of a mess of this. As expected, we could start the i386 executable just fine:
[sourcecode language="text" light="true" highlight="1"] rolf@Mac-mini$ ./hedgewars-server Listening on port 46631 ^C [/sourcecode]
But the x86_64 executable and the universal binary would not start:
[sourcecode language="text" light="true" highlight="1,4"] rolf@Mac-mini$ ./hedgewars -bash: ./hedgewars: Bad CPU type in executable
rolf@Mac-mini$ ./hwengine -bash: ./hwengine: Bad CPU type in executable [/sourcecode]
Because this Mac Mini runs a Core Duo, we figured the x86 was okay, but we weren't sure about the 64-bit architecture. A quick peek at Wikipedia confirmed our suspicion: The Intel Core Duo is not a 64 bit processor. In fact, 64-bit is the major difference between "Core Duo" and "Core 2 Duo". Additional "Googling" showes that Apple Support knows that, too.
So there you have it. The Mac App Store does not tell you what the problem really is, but chances are that if you get the "Could not install this Application on this machine" error, you have 32-bit architecture (the Core Duo) and the developer compiled the application for 64-bit architecture (the Core 2 Duo).
Why in god's name hedgewars has to be a 64-bit application beats me, but that's something I'm not going to change I'm afraid. It turns out that this as been reported as a bug to the Hedgewars team, which hasn't been picked up yet.
The good news for older model Intel Mac Mini Core Duo owners out there: You can replace your CPU with a Core 2 Duo processor. You'll need one of these:
- Core 2 Duo T7200 (2.00Ghz)
- Core 2 Duo T7400 (2.16Ghz)
- Core 2 Duo T7600 (2.33Ghz).
The processors are quite pricey, our quick check showed that they're all above the $200 price mark, which may be a bit steep for a processor upgrade. We expected about half that, so that was a bummer. Should you want to upgrade your CPU, buy thermal paste, and follow a good howto. To get a feeling of what you're getting into, check out the iFixit teardown of the Mac Mini.
The other option would be to trade in your Core Duo Mac Mini for a Core 2 Duo Mac mini. It's safer and probably about as costly as buying one of the strangely priced Core 2 Duo processors.