CFBundleIdentifier and Mac OS Launchpad

June 29, 2013

Recently, I bought some games to play and one of them was a bundle (Humble Bundle Telltale Games). I haven’t checked all of them just yet but there was a weird issue; on Launchpad, Back to the Future’s first episode (which I will refer as BTTF101 from now on since it’s the name of the app) and fifth episode (this one is BTTF105 so you get the idea) existed but none of the others (game has 5 episodes). I didn’t make an issue out of it and let it stay there for a while but it started to disturb me and I decided to reinstall or copy paste the games again. And what do you know, this time it was episode one and two. When I deleted episode two, it changed to another episode, when I deleted that one it changed again. To me, it looked like first episode was fine but there was a problem with the other four.

So, I decided to check the info on Info.plist which is inside every app to define it for the OS. First stop was BTTF101 and BTTF102, since first episode seemed correct and I wanted to compare it with one that doesn’t seem to work correctly. While I was checking BTTF101 and when I found this line:

<string>com.telltalegames.BTTF101</string>

I knew I had to check BTTF102 to find out what was there. And well, then it was obvious what the problem was, here is the line:

<string>com.telltalegames.Mac_Game</string>

After I checked other episodes and see that all of them had the same thing. It was obvious what has to be done, so I just changed all the episodes according to the first one and they were all on the Launchpad.

I wrote only the string part of the code but there is also the key part:

<key>CFBundleIdentifier</key>

Which identifies the app in a unique way. This quote should explain it good enough “For example, if your company’s domain is Ajax.com and you create an app named Hello, you could assign the string com.Ajax.Hello as your app’s bundle identifier.”

It’s obvious from the definition, what did they do wrong. It’s very simple, but they didn’t name their app on this section, which defines it for the Launchpad. It would be understandable if they would name similar named games with similar short names. For example; Great Adventures of Someone and Good Application on Sundays. As you can see, I named them both terribly because I couldn’t come up with something better. But I think you get the idea, since they both can be gaos, someone could have identified it as “com.telltalegames.gaos” and after a couple years maybe, when they create the second game, they would name it the same and have this problem. And this, I would understand. They shouldn’t do that also, they should check for this situation too but still, it wouldn’t be a terrible thing. But to name the first game of the 5 game series correct and the rest as “Mac_Game” is just weird. How can anyone don’t pay attention to that. Besides that, didn’t anyone just try to install all of the games on a Mac? It looks like they didn’t, I believe we wouldn’t see this problem if they did.

But this is enough for Talltale I think, because there is one more and this one, I just came across today while I was thinking about writing this blogpost and this one was to push I needed. Not worse than the problem with BTTF but bad enough. I decided to install The Book of Unwritten Tales (short name is bout) and the prequel The Book of Unwritten Tales: The Critter Chronicles. After copying both to Applications folder. I opened Launchbar and only The Book of Unwritten Tales was there, I checked Applications folder for the game for the other game and it was there. So the problem was obvious. I checked CFBundleIdentifier again and there it was, they both had this line:

<string>com.kingart.bout</string>

So, I don’t know when they released the mac version of their first game but obviously they forgot how they identified the first game and went ahead. But this is no excuse also, since the prequel has the same name and some addition, they should’ve thought about bout. See, since it even sounds weird, they should’ve thought that this is how they would name the first game and they should have thought of a more suitable name. Which they didn’t.

It may seem like I’m going hard on these guys since I don’t know if they created the games for Mac themselves or some other company did that for them. But it doesn’t make much difference. Since BTTF has 5 episodes and they have close release dates and maybe the same for Mac games there is no reason for this to happen and especially to name 4 of the games as Mac_Game is just incomprehensible. And about BoUT, for the second game, they should’ve thought about it. But, in both cases, they don’t show up on Launchpad on the same time, they shouldn’t ask for more clues to put this together. So, long story short, read the instructions before you go do something and test before you release it and test again.