-
Notifications
You must be signed in to change notification settings - Fork 0
Delta Updates
Sparkle supports "delta updates" for your application: when possible, users can download only the bits that have changed.
For each new version you release, you can provide a list of .delta
files in addition to the "full" archive of the version. Each .delta
contains the information necessary to upgrade from a single older version.
To generate a .delta
, you use the BinaryDelta
tool included with Sparkle like this:
BinaryDelta create path/to/old/MyApp.app path/to/new/MyApp.app output.delta
Presently, you'll have to build Sparkle from source to get the BinaryDelta
tool. In order to run the tool, you must have Sparkle.framework present in the same directory. You don't need to distribute the tool with your app.
Then you sign each .delta
and add an entry to your appcast's <item>
for each .delta
you have created:
<item>
<title>Version 2.0 </title>
<description>foo bar baz</description>
<pubDate>Wed, 09 Jan 2006 19:20:11 +0000</pubDate>
<enclosure url="http://you.com/2.0_full.zip"
sparkle:version="2.0"
length="123"
type="application/octet-stream"
sparkle:dsaSignature="..." />
<sparkle:deltas>
<enclosure url="http://you.com/1.5-2.0.delta"
sparkle:version="2.0"
sparkle:deltaFrom="1.5"
length="1485"
type="application/octet-stream"
sparkle:dsaSignature="..." />
<enclosure url="http://you.com/1.6-2.0.delta"
sparkle:version="2.0"
sparkle:deltaFrom="1.6"
length="1428"
type="application/octet-stream"
sparkle:dsaSignature="..." />
</sparkle:deltas>
</item>
If the user is running a version of the app for which you haven't provided a .delta
, or if the patch doesn't apply cleanly, they'll use the non-delta "full" update.