Alright, folks, it’s that time again. Sparkle 1.5b5’s out! Tons of bugs fixed, and tons of stuff refactored. I made much of the API private—that’ll give me more flexibility to change the architecture out from under you in the future.
Please read the release notes, because unless you’re using a .app and haven’t called anything in the Sparkle framework, I’ve probably broken things for you.
- Important Changes!
- Made every Sparkle class private except for
SUUpdater,SUAppcast,SUAppcastItem, and theSUVersionComparisonProtocol. - There is now a single
SUUpdatersingleton for every host bundle; instead of-[SUUpdater setHostBundle], you can use+[SUUpdater updaterForBundle]. - Redefined the (entire) delegate protocol accordingly.
- Renamed
-[SUUpdater updatePreferencesChanged]to-[SUUpdater resetUpdateCycle]. This provides better semantics for non-apps, which need to start the update cycle manually. -[SUUpdater checkForUpdatesWithDriver]is private. If you were usingSUProbingUpdateDriver, you can now use-[SUUpdater checkForUpdateInformation]for a similar effect.- All the user defaults keys are now private; instead,
SUUpdateris KVC-compliant forautomaticallyChecksForUpdates,updateCheckInterval, andfeedURL.
- Made every Sparkle class private except for
- Reduced the size of the English-only framework by 25%.
- System profiling information is now only submitted to the server once per week; this will help normalize your statistics across users with different interval preferences.
- The
feedParametersForUpdater:delegate method now requiresdisplayKeyanddisplayValuekeys (just human readable versions ofkeyandvalue) so that it can inform the user what’s being sent. - Added a delegate method called
pathToRelaunchForUpdater:which can be used for plugins to provide the path which should be used when relaunching the client after installing an update. - Added support for xml:lang to pick localized nodes in appcasts (for release notes, etc).
- Fixed a bug which would cause the “checking for updates” window to not disappear in certain extraordinary error conditions.
- Fixed a DSA signature checking bug for .tar.gz archives.
- Sparkle now refuses to update on any read-only volume, not just dmgs.
- Sparkle will clean up the host app’s name and version before sending it as the user agent string; some non-ASCII characters were causing problems.
- Added an Italian localization courtesy Michele Longhi.
- Added a Swedish localization courtesy Daniel Bergman.
- Fixes to the French localization courtesy Ronald Leroux and Yann Ricqueberg.
- Fixes to the German localization courtesy Sven-S. Porst.
- Fixes to the Russian localization courtesy Alexander Bykov and Anton Sotkov.
- Fixed a number of issues related to archive format detection: I reverted back to extensions from UTIs.
- Focus behavior fixes for
LSUIElementapps. - The status window progress bar now animates even when indeterminate.
- Major refactorings to improve functionality for non-app bundles.









Got Thoughts?
By all means share them, and start the conversation.
Leave a Comment
You can follow any responses to this entry via its RSS comments feed. You can also leave a trackback if the inclination is there.