August 2006 Archives
I'm going to my first WWDC this week, so why not give my predictions, along with everyone else? I'll do it in a quick tabular format:
| Mac Pro (Power Mac replacement) | 95% |
| Garbage collection in Objective-C | 95% |
| Low Level Virtual Machine (LLVM) | 90% |
| Better integration between Core Data, Sync Services, and Spotlight | 75% |
| New Finder | 75% |
| Some 3D graphics technology along the lines of Quartz 2D Extreme or Quartz Composer | 75% |
| Mac Mini revision | 65% |
| New MacBook Pro revision | 60% |
| New kernel in Leopard (to replace Mach) | 5% |
Well, let's see how I do. If your going to WWDC, too, stop on by and say "Hello"!
By default, when you double-click on a Dashboard widget, or run it from the command line with open(1), a dialog box comes up asking you to install the widget or cancel. If you install it, it gets copied into ~/Library/Widgets/. This widget installer was added somewhere around OS X 10.4.1 or 10.4.2, but it is a big pain if you are a widget developer. It's much more convenient if you can run the widget right in-place without going through the whole installation dialog routine.
It turns out the installer dialog has another mode allow exactly this behavior. I first found this out from Mac OS X Hints, but if you hold down Command and Option, the "Install" button turns into a "Run" button. This runs the widget from right where it is without installing it. Okay, so this is better, but ideally, I wish I could just set some preference so that widgets always run in place. From my little bit of reverse engineering, I could find no such preference, so it was time to bring out the big guns: SIMBL.
Versioning a Mac OS X application is pretty easy. There are just two keys in the Info.plist that need to be set. But there are some rules and guidelines (some well documented, and some not) that you should follow to provide the best experience for your users. I will go over these, as well as some tools and techniques to make the process less painful.
The two keys that need to be set are CFBundleVersion and CFBundleShortVersionString, and are described in the Runtime Configuration Guidelines. CFBundleShortVersionString is also called the "marketing version" and is presented to the user. It's what gets shown in Finder's Info Panel, but is not interpreted by the system. It can be pretty much anything you want. CFBundleVersion is called the "build version". It is actually used by the system, so it is important you follow the rules. Personally, I don't see much of an advantage to having separate build and marketing version numbers. In my ideal world, they would be the same, and I'd just set the two keys to the same value. However, fate is against me. Let's start out by looking at the official definition of CFBundleVersion.
