With a few notable exceptions, most Mac software has really lame update functionality. Programs will usually just tell you that there's a new version available, point you at the web site, and make you do the rest. I'm trying to fix that.
Sparkle is a module that developers can stick in their Cocoa applications (five-step install!) to get instant self-update functionality. By that, I mean that your app will be able to update itself, not just check for new versions: it'll read the update information from an appcast on your server, download, extract, install, restart, and even offer to show the users release notes before they decide if they want to update.
It's free, it's easy, and it'll make using a Mac better for everyone, so go for it!
Here are some key features of "Sparkle":
· True self-updating-no action required from the user.
· Supports appcasts for release information. Appcasts are cool.
· Extracts updates from .tar, .tbz, and .tgz archives.
· Displays a detailed status window to the user.
· Can display release notes to the user before updating.
· Seamless app integration-there's no mention of Sparkle anywhere; your app's name and icon are inserted everywhere automatically.
· Really, really easy to install.
· You don't have to put any glue code for Sparkle anywhere in your project (it's all through IB), so it's trivial to upgrade or remove the module.
· (Should be) good about error handling in bad conditions.
What's New in This Release: [ read full changelog ]
· Sparkle now requires DSA signatures on your updates. Check the documentation for more information on how to set that up if you don't already sign your updates. You can bypass this requirement if you deliver bothy your appcast and your updates over SSL.
· Sparkle will no longer display release notes located at file:// URLs, since Javascript on such a page would be able to read files on your file system.
· For security reasons, Sparkle will refuse to install updates which appear to "downgrade" the app.
· SUUpdater now implements new keys: "automaticallyDownloadsUpdates", "lastUpdateCheckDate", and "sendsSystemProfile."
· Fixed a bug that could prevent SUProbingUpdateDriver from working.
· Fixed a bug that prevented the updaterWillRelaunchApplication: delegate method from getting called.
· Fixed displaying release notes transmitted "loose" in the key.
· Fixed Sparkle compilation on 10.4 systems.
· Fixed a bug that could cause window confusion if an app changed its LSUIElement at runtime.
· Added support for Sparkle 1.1's behavior of disabling updates when the check interval is 0.
· Sparkle can now handle appending parameters to URLs which already have parameters.
· If an update's sparkle:shortVersionString is the same as the host's CFBundleShortVersionString, the sparkle:version and CFBundleVersion will be presented in parentheticals.