So, after making some research, and solving some web hosting issues for the bigger files, I’m glad to announce Multi-Safari now works directly on Mac OS X Leopard. I’ve added Safari 3.0.4, Tiger and Leopard versions, and updated the Safari 2.x downloads so that they work on Leopard without further tweaking. Older Safari versions (1.x) just can’t work on Leopard, sadly.
So what was the problem exactly with versions 2.x on Leopard? Apple decided they would prevent users from opening older versions of Safari in Mac OS X 10.5.1, possibly as a way to avoid unexpected bugs. Attempting to open an older version of Safari caused an error saying that this application doesn’t work on this version of Mac OS X.
In fact, Safari isn’t the only application for which old versions are blocked, the whole list can be found in the Exceptions.plist file in the LaunchServices system framework. In there you can see that the “com.apple.Safari” minimum version requirement is set to 5523.10, which is the Safari build number you can find in the Info.plist file inside the Safari 3 application bundle. When launching an application with the given bundle identifier, the system checks that the version number isn’t lower than that, and if so prevents the app from launching.
So how did I fix Multi-Safari to work around this system check? Simple: I changed the bundle identifier to “com.michelf.MultiSafari”; that’s all it takes. You may need to duplicate the application (or issue the right command in the Terminal) to make sure the Info.plist’s content is no longer cached by the system.
That causes another “issue” though: Safari, like most Mac OS X applications, keeps its preferences and settings in a file with the same name as its bundle identifier (“com.apple.Safari”), and changing the bundle identifier causes Safari to use another preference file. For commodity, I’ve added to the Multi-Safari launch script a command that copies the “com.apple.Safari.plist” file to “com.michelf.MultiSafari.plist” at first launch1. This means that if you change the regular Safari’s preferences afterwards, it won’t effect preferences for Multi-Safari, and vice-versa.
Last small detail: Mac OS X 10.5 adds automatically a quarantine flag to files downloaded from the internet. To activate this function on earlier versions of Safari which are still supported by Leopard (2.x), I added the “LSFileQuarantineEnabled” key to the Info.plist files. The quarantine function will thus still work Multi-Safari.
Actually, the script does not perform a copy. Instead, it creates a symbolic link which is replaced with a regular file by Safari later, the result is that we have a copy. Open up and look at the script and experiment if you must. ↩