Skip to content

Releases: sparkle-project/Sparkle

2.2.0-beta.1

13 Jun 05:31
Compare
Choose a tag to compare
2.2.0-beta.1 Pre-release
Pre-release
  • Update Focus Improvements (#924)
    • Present new scheduled updates in utmost focus only at opportune times (Zorg)
      • For regular apps opportune times are: app launch, app re-activation, and system being idle (without a power assertion being held to prevent display sleep) instead of previously being able to show up while actively using the app.
      • For background (dockless) apps opportune time is just app launch. Otherwise, the update is now shown behind other applications and windows, instead of previously stealing focus from other active apps.
    • Add APIs and documentation for adding gentle update reminders to compliment Sparkle's standard user interface (Zorg) (#2122)
    • Allow status window to be minimizable for regular app installs (Zorg) (#2100)
    • Center status window and inherit key focus from the previously shown update alert window (Zorg)
    • Activate app when checking for updates if the app is not currently active (e.g, from a menu bar extra menu item) (Zorg)
    • Fix issue where bringing status window to front made other active windows exit in macOS Ventura's Stage Manager (#2153) (Zorg)
    • Fix showing update in focus not bringing the "checking for updates" window in focus (Zorg) (#2150)
  • Rename XPC Service filenames for Sandboxing to show more friendly human-readable name in authorization dialog (Zorg) (#2096)
  • Add support for running the framework and sparkle-cli as root (Zorg) (#2119)
  • Fix issue where update cycle may not complete in unusual configuration if automatic checks are disabled + automatic downloading is enabled + install requires user interaction (Zorg) (#2133)
  • Update last update check time when choosing to install an update & relaunch (Zorg) (#2136)
  • Improve error reporting in the framework and sparkle-cli when installation fails with no write permission (Zorg) (#2157)
  • Use displayVersionString instead of versionString for OS version mismatch error message (samschott) (#2138)
  • Make displayVersionString non-null and update fallback documentation (Zorg) (#2139)
  • Ignore custom icons set via resource forks when applying delta updates (Zorg) (#2114)
  • Fall back to regular update if delta update fails to download (Zorg) (#2118)
  • Skip downloading delta updates when application has been moved to a file system (like FAT) that doesn't support regular permission modes (Zorg) (#2148)
  • Add and improve translation strings and update pt-BR (BR Lingo) (#2094)
  • Update localisations (Eitot) (#2113)
  • Replace deprecated code with newer APIs (Eitot) (#2112)
  • Remove obsolete fallbacks for older OS versions (Eitot) (#2110)
  • Remove SPUURLRequest (Zorg) (#2124)
  • Silence ivar deprecation warnings (Zorg) (#2099)
  • Fix Xcode 14 project warnings (Zorg) (#2147)

This update renames the bundled XPC Services, brings improvements to notifying users of new updates without disrupting their focus, and adds gentle update reminder APIs to further customize how Sparkle's standard user interface delivers new update alerts.

Discussions.

2.1.0 Delta Updates Upgrade

18 Feb 19:32
Compare
Choose a tag to compare

This update introduces a new major format for delta updates, which migrates away from deprecated APIs (xar) and creates smaller patches. If you don't use generate_appcast, please check the compatibility notes for creating delta updates.

  • New Binary Delta format
    • Features a custom and more efficient container format, migrating away from the deprecated xar format (Zorg) (#2051)
    • Adds delta compression options for lzma, bzip2, zlib, lzfse, lz4, and no compression (Zorg) (#2051)
    • Changes default delta format compression from bzip2 (in version 2) to lzma (in version 3) resulting in smaller deltas (Zorg) (#2051)
    • Preserve file system (HFS+/apfs) level compression when applying delta updates (Zorg) (#2084)
    • Tracks renames and binary diffs for files that have moved around to new locations using intelligent heuristics (Zorg) (#2051, #2053)
    • Added more unit tests, UI tests, and generate_appcast/BinaryDelta tools support for the new format (Zorg) (#2052, #2054)
  • Major upgrade improvements (#2070)
    • Fix skipping a major version to not skip subsequent major versions (Zorg) (#2079)
    • Add sparkle:belowVersion element for informational updates (Zorg) (#2080)
    • Add option to allow developers to ignore/reset user skipped upgrades (Zorg) (#2081)
  • Fix progress bar and button alignment for checking updates (Zorg) (#2066)
  • Fix unsteady progress when installing updates (Zorg) (#2072)
    • This deprecates -[SPUUserDriver showInstallingUpdate] and -[SPUUserDriver showSendingTerminationSignal] in favor for -[SPUUserDriver showInstallingUpdateWithApplicationTerminated:]
  • Check http statusCode in didFinishDownloadingToURL (Eric Shapiro, Zorg) (#2049, #2073)
  • Use strcoll_l() for locale-independent comparisons for delta updates (Dan Rigdon-Bel) (#2087)
  • Fix version compare not treating '2.1.0' and '2.1' as being equal (Zorg) (#2065)
  • Add verify and account options for signing updates (Zorg) (#2074)
  • Add delta patch and Apple code signing verification in generate_appcast (Zorg) (#2076, #2077)
  • Use more modern NSSecureCoding APIs when available (Zorg) (#2058)
  • Use more modern FileManager APIs for copying files (Zorg) (#2059)
  • Fix make release failing when customizing XPC_SERVICE_BUNDLE_ID_PREFIX (Zorg) (#2060)
  • Preserve the Entitlements directory in podspec (digitalMoksha) (#2062)
  • Add hidden option to generate_appcast to set max CDATA threshold (Zorg) (#2075)

Sparkle 2.1.0-beta.2

05 Feb 07:22
Compare
Choose a tag to compare
Sparkle 2.1.0-beta.2 Pre-release
Pre-release
  • New Binary Delta format (version 3)
    • Features a custom and more efficient container format, migrating away from the deprecated xar format (Zorg) (#2051)
    • Adds delta compression options for lzma, bzip2, zlib, lzfse, lz4, and no compression (Zorg) (#2051)
    • Changes default delta format compression from bzip2 (in version 2) to lzma (in version 3) resulting in smaller deltas (Zorg) (#2051)
    • Preserve file system (HFS+/apfs) level compression when applying delta updates (Zorg) (#2084)
    • Tracks renames and binary diffs for files that have moved around to new locations using intelligent heuristics (Zorg) (#2051, #2053)
    • Added more unit tests, UI tests, and generate_appcast/BinaryDelta tools support for the new format (Zorg) (#2052, #2054)
  • Major upgrade improvements (#2070)
    • Fix skipping a major version to not skip subsequent major versions (Zorg) (#2079)
    • Add sparkle:belowVersion element for informational updates (Zorg) (#2080)
    • Add option to allow developers to ignore/reset user skipped upgrades (Zorg) (#2081)
  • Fix progress bar and button alignment for checking updates (Zorg) (#2066)
  • Fix unsteady progress when installing updates (Zorg) (#2072)
  • Check http statusCode in didFinishDownloadingToURL (Eric Shapiro, Zorg) (#2049, #2073)
  • Fix version compare not treating '2.1.0' and '2.1' as being equal (Zorg) (#2065)
  • Add verify and account options for signing updates (Zorg) (#2074)
  • Add delta patch and Apple code signing verification in generate_appcast (Zorg) (#2076, #2077)
  • Use more modern NSSecureCoding APIs when available (Zorg) (#2058)
  • Use more modern FileManager APIs for copying files (Zorg) (#2059)
  • Fix make release failing when customizing XPC_SERVICE_BUNDLE_ID_PREFIX (Zorg) (#2060)
  • Preserve the Entitlements directory in podspec (digitalMoksha) (#2062)
  • Add hidden option to generate_appcast to set max CDATA threshold (Zorg) (#2075)

Changes since beta 1:

  • Major upgrade improvements (#2070)
  • Preserve file system (HFS+/apfs) level compression when applying delta updates (Zorg) (#2084)

This update introduces a new major format (version 3) for delta updates, which migrates away from a deprecated archive API (xar) and creates smaller patches. Do note for compatibility you will still need to use the older version 2 format in production until you have older applications shipping with delta 3 support (and until delta support is finalized). However, we currently advise testing new version 3 delta patches using the BinaryDelta tool to see how the resulting patches will work out for your apps in the future, so we can address feedback sooner. You can also pass --version=2 to BinaryDelta create to compare against older version 2 patches (the new default is now --version=3). Check out BinaryDelta --help and delta updates documentation for more information.

Sparkle 2.1.0-beta.1 - New Delta Update format

24 Jan 06:31
Compare
Choose a tag to compare
  • New Binary Delta format (version 3)
    • Features a custom and more efficient container format, migrating away from the deprecated xar format (Zorg) (#2051)
    • Adds compression options for lzma, bzip2, zlib, lzfse, lz4, and no compression (Zorg) (#2051)
    • Changes default format compression from bzip2 (in version 2) to lzma (in version 3) resulting in smaller deltas (Zorg) (#2051)
    • Tracks renames and binary diffs for files that have moved around to new locations using intelligent heuristics. For apps including dependencies that change versions often (like chromium), this can produce significantly smaller patches. (Zorg) (#2051, #2053)
    • Added more unit tests, UI tests, and generate_appcast/BinaryDelta tools support for the new format (Zorg) (#2052, #2054)
  • Fix progress bar and button alignment for checking updates (Zorg) (#2066)
  • Fix unsteady progress when installing updates (Zorg) (#2072)
    • SPUUserDriver change: -showInstallingUpdateWithApplicationTerminated: has replaced -showInstallingUpdate and showSendingTerminationSignal (check the header docs)
  • Check http statusCode in didFinishDownloadingToURL (Eric Shapiro, Zorg) (#2049, #2073)
  • Fix version compare not treating '2.1.0' and '2.1' as being equal (Zorg) (#2065)
  • Add verify and account options for signing updates (Zorg) (#2074)
  • Add delta patch and Apple code signing verification in generate_appcast (Zorg) (#2076, #2077)
  • Use more modern NSSecureCoding APIs when available (Zorg) (#2058)
  • Use more modern FileManager APIs for copying files (Zorg) (#2059)
  • Fix make release failing when customizing XPC_SERVICE_BUNDLE_ID_PREFIX (Zorg) (#2060)
  • Preserve the Entitlements directory in podspec (digitalMoksha) (#2062)
  • Add hidden option to generate_appcast to set max CDATA threshold (Zorg) (#2075)

This beta update introduces a new major format (version 3) for delta updates, which migrates away from a deprecated archive API (xar) and creates smaller patches. Do note for compatibility you will still need to use the older version 2 format in production until you have older applications shipping with delta 3 support (and until delta support is finalized). However, we currently advise testing new version 3 delta patches using the BinaryDelta tool to see how the resulting patches will work out for your apps in the future, so we can address feedback sooner. You can also pass --version=2 to BinaryDelta create to compare against older version 2 patches (the new default is now --version=3). Check out BinaryDelta --help and delta updates documentation for more information.

Sparkle 2.0.0

26 Dec 23:29
Compare
Choose a tag to compare
  • 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)
  • 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 when user authorization is needed (Zorg)
    • Adoption of improved atomic-safe 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 compatibility with Sparkle 1; you can likely test Sparkle 2 in an existing app with little to no 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 in SPUUpdaterDelegate.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 using SPUUpdater. (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
    • Non-bare package based updates that are zipped or archived must add sparkle:installationType="package" to the appcast item enclosure (this doesn't apply to bare packages which aren't archived) (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)
  • Expose why a new update is unavailable and direct user to prior release notes or website info (#1877, #1886) (Zorg)
    • Add sparkle:fullReleaseNotesLink element allowing Sparkle to show a better stylized and full changelog to the user (#2001) (aONe)
    • Add delegate API allowing applications to show full in-app or offline version history to the user (#1989) (Billy Gray)
  • Major/Paid Upgrades Enhancements
    • Latest minor updates are preferred over major updates (specified by sparkle:minimumAutoupdateVersion) (#1850) (Zorg)
    • Major updates can be skipped with a user confirmation (#1853) (Zorg)
  • Informational only and critical updates can be specified selectively by app version (#1862)
  • Add support for posting updates only on specific channels (eg for supporting beta updates) (#1879) (Zorg)
  • System profiler privacy and transparency (#1690) (Martin Pilkington)
  • Support getting app icon from asset catalog (#1694) (Charles Srstka)
  • Don't bring up authorization just because group ID doesn't match (#1830) (Zorg)
  • Raise minimum system version to macOS 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 beta versions of Sparkle 2 and use sandboxing, please re-familiarize yourself with the Sandboxing guide. Some of the XPC Services are now optional and integration with XPC Services and code signing have been simplified. The SPUUserDriver protocol for custom user interfaces has been greatly simplified too.

Sparkle 2.0.0-rc.1

12 Dec 07:02
Compare
Choose a tag to compare
Sparkle 2.0.0-rc.1 Pre-release
Pre-release

Small changes from Beta 6:

  • Update Dutch and German localization when signing error is detected (#2034)
  • Add and update Carthage binary json distribution file on release (#2036)

To simplify integration of Sparkle in sandboxed applications, the XPC Services were moved inside of Sparkle's framework in Beta 4.

Carthage is now properly supported. Only binary origin is supported and source compiles (with git or github origins) from Carthage will now result in an error. Visit the updated setup for more info if you use Carthage.

This version is intended to be a final release candidate for Sparkle 2 (barring documentation changes).

Overall 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 in SPUUpdaterDelegate.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 using SPUUpdater. (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
    • Package based updates that are zipped or archived must add sparkle:installationType="package" to the appcast item enclosure (this doesn't apply to bare packages that aren't archived) (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
    • Latest minor updates are preferred over major updates (specified by sparkle:minimumAutoupdateVersion) (#1850) (Zorg)
    • Major updates can be skipped with a user confirmation (#1853) (Zorg)
  • 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 sparkle:fullReleaseNotesLink element allowing Sparkle to show a better stylized and full changelog to the user (#2001) (aONe)
    • Add delegate API allowing applications to show full in-app or offline version history to the user (#1989) (Billy Gray)
  • Add support for posting updates only on specific channels (eg for supporting beta updates) (#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.

Sparkle 2.0.0-beta.6

06 Dec 07:49
Compare
Choose a tag to compare
Sparkle 2.0.0-beta.6 Pre-release
Pre-release

Minor changes from Beta 5:

  • Revert monotonic clock changes from Beta 5 (#2018)
  • Use user agent of updater bundle instead of the host bundle for more accurate reporting (#2020)
  • Clarify installation error better when update is rejected due to invalid signing signature (#2022)
  • Fix unarchiving job being blocked when passed bad input (#2023)
  • Fix volume detection being wrong in rare cases (#2026)
  • Improve pipe usage when unarchiving files (#2027)
  • Document how to implement error based delegate methods in Swift (#2033)

To simplify integration of Sparkle in sandboxed applications, the XPC Services were moved inside of Sparkle's framework in Beta 4.

Please view Sparkle's updated guide on sandboxing if you use a custom workflow for signing your app outside of Xcode, or haven't adapted to the XPC Services being moved inside the framework yet from Beta 4.

Hopefully this will be the last beta for 2.0.0 (fingers crossed).

Overall 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 in SPUUpdaterDelegate.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 using SPUUpdater. (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
    • Package based updates that are zipped or archived must add sparkle:installationType="package" to the appcast item enclosure (this doesn't apply to bare packages that aren't archived) (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
    • Latest minor updates are preferred over major updates (specified by sparkle:minimumAutoupdateVersion) (#1850) (Zorg)
    • Major updates can be skipped with a user confirmation (#1853) (Zorg)
  • 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 sparkle:fullReleaseNotesLink element allowing Sparkle to show a better stylized and full changelog to the user (#2001) (aONe)
    • Add delegate API allowing applications to show full in-app or offline version history to the user (#1989) (Billy Gray)
  • Add support for posting updates only on specific channels (eg for supporting beta updates) (#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.

Sparkle 1.27.1

13 Nov 06:37
Compare
Choose a tag to compare
  • Use px instead of pt when specifying font size to fix default font size in WebView from #1962 (regressed in 1.25.0 with WKWebView adoption) (Daniel Jalkut)
  • Fix to prevent Sparkle manipulating the host app's high level WebView defaults from #1961 (affecting only macOS versions before 10.11 in 1.x branch) (Daniel Jalkut)
  • Add safer handling of applying binary delta files from #1990 (Zorg)
  • Don't use current date unless necessary when scheduling next update from #1991 (Zorg)
  • Whitelist about:srcdoc as a safe web URL from #1938, #2007 (Louis Pontoise, Zorg)
  • Backport not hiding update window on deactivation from #2008 (Zorg)

If you use Sparkle's Delta Updates support, you must create new delta files using tools from a Sparkle 1.27.0 or later distribution. Newly generated delta files will still be patchable and compatible from older versions of Sparkle however.

Please visit Sparkle's setup guide if you are currently not using EdDSA and need to migrate.

Sparkle 2.0.0-beta.5

08 Nov 08:32
Compare
Choose a tag to compare
Sparkle 2.0.0-beta.5 Pre-release
Pre-release

Changes from Beta 4:

  • Revert "Set CODE_SIGN_INJECT_BASE_ENTITLEMENTS=NO for release (#1994)
  • Add safer handling for applying binary delta files (Zorg) (#1988)
  • Add <sparkle:fullReleaseNotesLink> element for showing users full release notes of an application (aONe) (#2001)
  • Add full release notes link flag to generate_appcast (Zorg) (#2015)
  • Add delegate method for showing full release notes inside the application (Billy Gray) (#1989)
  • Whitelist about:srcdoc as a safe web URL (Louis Pontoise , Zorg) (#2006)
  • Clarify documentation for canCheckForUpdates / sessionInProgress (Zorg) (#2009)
  • Fix null deference analyzer warnings (Zorg) (#2011)
  • Don't use current date unless necessary when scheduling next update (Zorg) (#1992)
  • Prevent potential rapid update checks using monotonic clock (Zorg) (#2002)

To simplify integration of Sparkle in sandboxed applications, the XPC Services were moved inside of Sparkle's framework in Beta 4.

If you use Sparkle's Delta Updates support, you must create new delta files using a relatively recent version of Sparkle 2 (#1906 - from July 24). Newly generated delta files will still be patchable from much older versions of Sparkle.

Please view Sparkle's updated guide on sandboxing if you use a custom workflow for signing your app outside of Xcode (Beta 5 made some changes here), or haven't adapted to the XPC Services being moved inside the framework yet from Beta 4.

For letting users browse your application's full version history, check out our updated documentation on our Publishing an update page.

Overall 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 in SPUUpdaterDelegate.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 using SPUUpdater. (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
    • Package based updates that are zipped or archived must add sparkle:installationType="package" to the appcast item enclosure (this doesn't apply to bare packages that aren't archived) (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
    • Latest minor updates are preferred over major updates (specified by sparkle:minimumAutoupdateVersion) (#1850) (Zorg)
    • Major updates can be skipped with a user confirmation (#1853) (Zorg)
  • 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 sparkle:fullReleaseNotesLink element allowing Sparkle to show a better stylized and full changelog to the user (#2001) (aONe)
    • Add delegate API allowing applications to show full in-app or offline version history to the user (#1989) (Billy Gray)
  • Add support for posting updates only on specific channels (eg for supporting beta updates) (#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.

Sparkle 1.27.1-rc.2

08 Nov 07:29
Compare
Choose a tag to compare
Sparkle 1.27.1-rc.2 Pre-release
Pre-release
  • Use px instead of pt when specifying font size to fix default font size in WebView from #1962 (regressed in 1.25.0 with WKWebView adoption) (Daniel Jalkut)
  • Fix to prevent Sparkle manipulating the host app's high level WebView defaults from #1961 (affecting only macOS versions before 10.11 in 1.x branch) (Daniel Jalkut)
  • Add safer handling of applying binary delta files from #1990 (Zorg)
  • Don't use current date unless necessary when scheduling next update to be more resilient against rapid polling from #1991 (Zorg)
  • Prevent potential (unlikely) rapid update checks from sleep/wake events using a minimum monotonic delay from #2000 (Zorg)
  • Whitelist about:srcdoc as a safe web URL from #1938, #2007 (Louis Pontoise, Zorg)
  • Backport not hiding update window on deactivation from #2008 (Zorg)

If you use Sparkle's Delta Updates support, you must create new delta files using Sparkle 1.27.0 or later. Newly generated delta files will still be patchable from older versions of Sparkle however.