Skip to content

Releases: sparkle-project/Sparkle

First spark of 2014

28 Jun 20:29
Compare
Choose a tag to compare

⚠️ Do NOT use this or any older version of Sparkle ⚠️

Changes since 1.5.6b:

  • "Automatically install updates in the future" works as described, with no extra prompts.
  • Compiles with Xcode 5 and 10.9 SDK.
  • Name of finish_installation.app helper is configurable.
  • Updated translations.
  • Dropped support for garbage collection (only applications with ARC and manual memory management are supported.)
  • Removed code for Mac OS X 10.4/10.5.
  • Fixed embedded release notes font in Mac OS X 10.9.
  • Modernized Objective-C, fixed minor bugs and compiler warnings.

This build is compatible with Mac OS X 10.6 and 64-bit Intel.

1.5-beta6

28 Jun 20:35
Compare
Choose a tag to compare

⚠️ This code has unpatched critical security vulnerability. Do NOT use this or any older version of Sparkle ⚠️

🚫 Sparkle 1.5 is not compatible with OS X 10.11 El Capitan 🚫 Please use a newer version of Sparkle.

  • Important Changes
    • 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 both 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.

1.5-beta5

29 Jun 04:41
Compare
Choose a tag to compare

🚫 Sparkle 1.5 is not compatible with OS X 10.11 El Capitan 🚫 Please use a newer version of Sparkle.

  • Important Changes!
    • Made every Sparkle class private except for SUUpdater, SUAppcast, SUAppcastItem, and the SUVersionComparisonProtocol.
    • There is now a single SUUpdater singleton 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 using SUProbingUpdateDriver, you can now use -[SUUpdater checkForUpdateInformation] for a similar effect.
    • All the user defaults keys are now private; instead, SUUpdater is KVC-compliant for automaticallyChecksForUpdates, updateCheckInterval, and feedURL.
  • 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 feedParamatersForUpdater: delegate method now requires "displayKey" and "displayVersion" keys 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 LSUIElement apps.
  • The status window progress bar now animates even when indeterminate.
  • Major refactorings to improve functionality for non-app bundles.

1.5-beta4

29 Jun 04:41
Compare
Choose a tag to compare

🚫 Sparkle 1.5 is not compatible with OS X 10.11 El Capitan 🚫

  • Fixed a critical bug which prevented non-.dmgs from unarchiving properly.
  • Added reporting of 64-bit capability to the profiling system.

1.5-beta3

29 Jun 04:42
Compare
Choose a tag to compare

🚫 Sparkle 1.5 is not compatible with OS X 10.11 El Capitan 🚫

  • Added a new delegate method to SUUpdater.h to allow delegates to specify custom version comparators.
  • Added a German localization, courtesy the Camino localizer team: Dominik Tobschall, Tobias Stohr, and Friedemann Bochow.
  • Bug fixes:
    • Fixed a serious bug which could cause a server to be DDoS'd (or the host app to crash!) if an appcast fails to be parsed.
    • Fixed .tbz extraction if the archive was made with Stuffit.
    • Fixed support for .tar.bz2 and .tar.gz; Sparkle has to assume the archive is a tar when it sees "bz2" and "gz"; don't use those without tarring.
    • Fixed a typo which caused the shouldPromptForPermissionToCheckForUpdatesToHostBundle: method to not work in 1.5b2.
    • Fixed .zip extraction on Tiger (Apple changed the UTI between releases)
    • Fixed a crasher on Tiger.
    • Fixed display of the default app icon when the host app doesn't have an icon.
    • Sparkle now displays a sensible progress string and uses an indeterminate progress bar when the server doesn't report a file size.
    • Fixed some memory leaks.

1.5-beta2

29 Jun 04:44
Compare
Choose a tag to compare

🚫 Sparkle 1.5 is not compatible with OS X 10.11 El Capitan 🚫

  • Compatibility Issues:
    • Most of the delegate method selectors have changed to scale better. See SUUpdater.h for changes; you'll likely have to make changes if you implement any delegate methods.
    • If you're using .tar.gz or .tar.bz2 archives, name them ".tbz" or ".tgz" instead; Sparkle now uses UTIs for archive detection, and it's not smart about double extensions.
    • I'm no longer supporting 10.3. This may or may not work on Panther—probably not.
    • Sparkle's no longer built for ppc64 by default. If you want to ship that, feel free to build your own, but this saves a few hundred k.
  • Enhancements:
    • Sparkle now detects if the preferences for automatic update checks or the time interval change mid-cycle.
    • If your product is a non-.app, you need to clue Sparkle in on the change by calling [[SUUpdater sharedUpdater] updatePreferencesChanged].
    • Added a cancel to the "checking for updates..." dialog.
    • Sparkle now cleans up all its litter in /tmp.
    • Made SUUpdater's delegate an IBOutlet so you can hook it up in IB.
  • Bug fixes:
    • Sparkle no longer crashes on non-GC hosts when the user cancels an update's downloads.
    • Sparkle no longer gets stuck in an inconsistent state or crashes when it can't parse the appcast on scheduled updates.
    • Added the sharedUpdater method to SUUpdater, as it should have been.
    • Fixed a bug where the "checking for updates..." window wouldn't go away if an error occurs while checking for updates.
    • Made the dual-mode build configuration actually use the .xcconfig which builds it with GC support. (oops!)
    • Fixed relaunching for prefpanes.
    • Sparkle no longer fails to install updates on Snow Leopard (though there's still an issue with trashing the old version of the app, but it seems to be a 10.6 bug)
    • Sparkle now handles redirects correctly under Tiger.
    • Fixed the installation path for non-.app bundles.
    • Fixed a bug which could crash Sparkle under non-English locales.
    • Fixed a weird race condition which could cause the relaunch tool to never notice that its target relaunched.
    • Fixed a bug where if the host app is inactive when an update occurs, the update alert sometimes doesn't become key.
    • Minor textual fixes.
  • Localizations:
    • Dutch: Maarten Van Coile
    • French: Yann Ricquebourg
    • Spanish: Ernesto Gomez Cereijo

1.5-beta1

29 Jun 04:47
Compare
Choose a tag to compare

🚫 Sparkle 1.5 is not compatible with OS X 10.11 El Capitan 🚫

  • The most important things to know:
    • The 10.3 support is untested at best; sketchy at worst. Test with it thoroughly before you use it.
    • Sparkle now asks for permission to update on second launch; don't be surprised at that. You can change that behavior with a delegate method; read SUUpdater.h for more info.
    • We no longer distinguish between "check on startup" and "scheduled updates"; everything is scheduled, with the default being every day.
    • The test application is using the new profiling features, but that's only for demonstration: these are off by default. More on this later.
    • There are no localizations yet.
  • New features:
    • Sparkle now supports .pkgs. Just name the .pkg the name of the app and put in the update archive.
    • Sparkle now sends optional demographic profiling information; set SUEnableSystemProfiling to YES in your Info.plist and check out the GET data sent to your webserver when fetching the appcast. More on this in the documentation. The test application has this on so you can see the behavior.
    • Sparkle now supports updating non-.apps. Just call -setHostBundle: on the global SUUpdater to let it know what you're trying to update.
    • Sparkle now supports garbage collection in the host app. Use "Sparkle-with-GC.framework" for that, but be aware it's 10.5-only.
    • Sparkle is now 64-bit compatible, compiling both ppc64 and x86_64.
    • Sparkle now supports a sparkle:minimumSystemVersion key you can set on appcast items. It does what you think it does.
    • Sparkle now checks to see if the host app is running from a disk image and refuses to update if it is. (10.4+ only)
    • Added support for entities in enclosure paths.
    • The file size output is now formatted prettily.
    • Sparkle now gives visual indication that it's checking for updates when the update's user initiated. ie: it pops up a status controller saying "checking for updates..."
    • Added support for an SUPublicDSAKeyFile, so people don't have to copy/paste their entire key into their Info.plist. Set this key in your Info.plist to the filename of the key in your Resources directory.
    • Added an actually maintainable codebase.
  • Changes:
    • Sparkle version comparison is now dramatically less stupid and verified by a bunch of unit tests. If something doesn't work the way you think it should, add a test to SUVersionComparisonTest.m
    • Added a minimum to the check interval so that developers don't accidentally release their apps into the wild with 60-second test check intervals and have DOS-attack-like results. It's an hour now for release mode; feel free to change it.
    • The relaunching process now uses a separate helper app, which is a much more robust method.
    • Changed CFBundleShortVersionString behavior: Sparkle no longer uses Apple's about box style of displaying ShortVersionString (CFBundleVersion) when the latter is available.
    • No more MD5 checking. Use DSA: it's actually secure.
    • The abomination that was SUStatusChecker is dead. Use SUProbingUpdateDriver instead.
  • Bugfixes:
    • Fixed a huge bug with fully-automatic updating: before, if the user chose to relaunch later, the app would be running from the trash for a while. Now the buttons are "install and relaunch" or "install later."
    • Sparkle forces Spotlight to reindex the updated app so that it won't keep pointing to the one in the trash.
    • Sparkle trims whitespace from around DSA signatures; this could cause crashes before.
    • Fixed a bug where the user choosing to skip a version would inhibit future automatic updates until the next launch.
    • Fixed a bug that could occur when the app has a localized CFBundleName.
    • .dmgs now work on Leopard.
    • The status controller's button now sizes appropriately to the localization.
    • Sparkle now works correctly with LSUIElement apps: it focuses them before displaying the update alert.
    • Sparkle now deletes failed partial downloads.
    • The update alert no longer floats above everything in the app.
    • Fixed varied and sundry memory leaks.
  • A ton of other things that I've forgotten or were too small to mention!