Skip to content
caldwell edited this page May 15, 2012 · 3 revisions

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.

Clone this wiki locally