Architecture specific updates instead of putting a Universal Binary everywhere

Asked by Felix Paul Kühne

Hello there,

first of all, thanks a lot for providing this framework. It really simplifies stuff a lot for us! :-)

VideoLAN's VLC development team started to use Sparkle (instead of our home-cooked cross-OS facility) with VLC 1.1. Previously, we used to provide architecture specific packages to save bandwidth and our users' disk space (meaning a package for PPC32, Intel32 and Intel64 plus a really fat Universal Binary for those who like which can take up to 140 MB on disk when installed).

As far as I understood from the documentation, Sparkle can only update Universal Binaries or packages for a single architecture as it just allows one download per release.

Is there a clean way to do the following?
- User installed Intel64 package - install a Intel64-only package on update
- User installed a Universal Binary - update to another Universal Binary
etc.

This would help us a lot as our individual downloads are currently around 60 MB, which could be limited to 20 MB for the vast majority of users. Considering around 2 million downloads per month, that's quite a bit of bandwidth :-)

Question information

Language:
English Edit question
Status:
Solved
For:
Sparkle Edit question
Assignee:
No assignee Edit question
Solved by:
Andy Matuschak
Solved:
Last query:
Last reply:
Revision history for this message
Best Andy Matuschak (andymatuschak) said :
#1

Unfortunately, the best suggestion I have is to alter the appcast URL according to architecture, then to serve up (either dynamically or statically) an appcast with the appropriate archives.

You can either set your different architectures to have different appcast URLs in your Info.plist when mastering your .apps, or you could on first launch check the architecture and call setFeedURL: accordingly on your SUUpdater.

Revision history for this message
Felix Paul Kühne (fkuehne-videolan) said :
#2

Thanks a lot for the quick response!

We will just alter the Info.plist in the respective packages. That's the best way for us, as it is easily scriptable.

Thank you for the feedback!

Best regards,

Felix

Revision history for this message
livings124 (livings124) said :
#3

This might be of interest to you: https://bugs.launchpad.net/sparkle/+bug/316247

The tag system in the patch would make it easy to support multiple architectures in a single appcast. This is what we've used in Transmission for a long while now to support beta and releases in the same appcast.

It would be great if this were finally built into Sparkle proper (hint hint).