Sparkle 2.0.0-beta.4
Pre-releaseTo simplify integration of Sparkle in sandboxed applications, Beta 4 has now moved the XPC Services inside of Sparkle's framework. This is a major change in how XPC Services were integrated from previous versions of Sparkle. Please read Sparkle's updated guide on sandboxing on how to adapt to these changes and test updating in your application.
Changes from Beta 3:
- Move XPC Services inside the framework (Zorg) (#1965)
- Fix to prevent Sparkle manipulating the host app's high level WebView defaults, which only affects applications using the downloader XPC Service (Daniel Jalkut) (#1936)
- Use px instead of pt when specifying font size to fix the default font size appearing larger than expected in release notes (Daniel Jalkut) (#1962)
- Make canCheckForUpdates property KVO compliant/observable, making menu item validation usable from SwiftUI applications (Zorg) (#1968)
- Fix order of inserting new appcast items in generate_appcast (Zorg) (#1982)
- Set CODE_SIGN_INJECT_BASE_ENTITLEMENTS=NO for release (Zorg) (#1973)
- Updates Version History French string translation (Micah Moore) (#1975)
- Update localizations for English, German, Dutch (Eitot) (#1978, #1977, #1976)
Changes:
- Support for Sandboxed Applications (Zorg)
- Support for writing custom user interfaces (Zorg)
- Support for updating external Sparkle-based bundles (Zorg)
- Added command line utility to update Sparkle-based bundles (Zorg)
- More modern architecture
- Moves extraction, validation, and installation into a submitted launchd agent/daemon with XPC communication (Zorg)
- Features faster installs with shorter update/relaunch times (#1802) (Zorg)
- Provides more robust installs that need to request user authorization (Zorg)
- Adoption of atomic-safe bundle replacing updates leveraging APFS (#1801) (Zorg)
- API Changes
- Introduced new SPUStandardUpdaterController, SPUUpdater, SPUUserDriver classes/protocols (Zorg)
- Decoupled AppKit and UI logic in the framework from core functionality (Zorg)
- Ensure (most) API / ABI compatibility with Sparkle 1.x; you can likely test Sparkle 2 in an existing app without any changes (Zorg)
- Deprecated SUUpdater, albeit it is still functional for testing and transitional purposes (Zorg)
-bestValidUpdateInAppcast:forUpdater:
delegate method behavior has been refined and discouraged for some cases. Please review its updated header documentation inSPUUpdaterDelegate.h
if you use this method. (#1838, #1862, #1879, #1880) (Zorg)- Delegation methods may have been removed or added to the newer updater API. Please review
SPUUpdaterDelegate
if usingSPUUpdater
. (Zorg)
- Updater Changes
- Automatic silent and manual update alert prompts are now merged together (Zorg)
- Updates will attempt to install even if the user quits the application without relaunching the application update explicitly (Zorg)
- Updates can be downloaded in the background automatically but later prompt the user to install them, particularly if Sparkle doesn't have sufficient permission to install them without the user's permission (Zorg)
- Authorization now occurs before launching the installer and before terminating the application, which can be canceled by the user cleanly (Zorg)
- Sparkle uses the icon of the bundle to update for its authorization dialog. A 32x32 image representation of the icon is needed. (Zorg)
- Sudden termination for silent automatic updates isn't disabled anymore (Zorg)
- Policy Changes
- Distributing updates without EdDSA signing the archives is now deprecated (Zorg)
- Package based updates that are zipped or archived must add sparkle:installationType="package" to the appcast item enclosure (Zorg)
- We now recommend using sparkle:version and sparkle:shortVersionString top level elements instead of enclosure attributes (#1878) (Zorg)
- The link element in an appcast item is now used for directing users to the product's website if they don't meet minimum system requirements (#1877) (Zorg)
- Major/Paid Upgrades Enhancements
- Informational only and critical updates can be specified selectively by app version (#1862)
- Expose why a new update is unavailable and direct user to prior release notes or website info (#1877, #1886) (Zorg)
- Add support for posting updates only on specific channels (#1879) (Zorg)
- System profiler privacy and transparency (#1690) (Martin Pilkington)
- Support getting app icon from asset catalog (#1694) (Charles Srstka)
- Don't hide update alert window now on deactivation (#1804) (Zorg)
- Don't bring up authorization just because group ID doesn't match (#1830) (Zorg)
- Raise minimum system version to 10.11 (Zorg)
- Special thanks to developers using early builds of this release in production and contributors for keeping this running (Kornel, Jonas Zaugg, Gwynne Raskind, Jordan Rose, Tony Arnold, Bryan Jones, Christian Tietze, Jakob Egger, and many more)
Please visit Sparkle's website for more information on documentation and migration.
If you are migrating from earlier alpha versions of Sparkle 2, please re-familiarize yourself with the Sandboxing guide. Some of the XPC Services are now optional and integration with code signing has been simplified. The SPUUserDriver protocol for custom user interfaces has been greatly simplified too.