Utility to check all apps for updates?

Asked by Karl Moskowski

Has anyone ever created a utility that scans all your apps and checks them for updates?

I've kludged together a little test app that:
- scans /Applications/ for apps that have SUFeedURL set in their Info.plist
- for each of those app bundles, instantiates an SUUpdater and calls checkForUpdateInformation.
- NSLogs the results.

What I've noticed is that some apps' appcasts aren't compatible with Sparkle 1.5 - unsigned updates over http:, incorrect keys. I guess they were built with older versions of Sparkle. Maybe the delegate protocol needs to be able handle errors on behalf of the FW.

(I recall reading about someone suggesting this a while back, but I never heard a follow-up.)

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

Check out AppFresh: http://metaquark.de/appfresh/

Revision history for this message
Karl Moskowski (kolpanic-deactivatedaccount) said :
#2

Cool! Thanks, Andy.

However, it appears to rely on iUseThis instead of the apps' own appcasts. (Unless it's statically linked, I don't think it uses Sparkle.)

Revision history for this message
Karl Moskowski (kolpanic-deactivatedaccount) said :
#3

Thanks Andy Matuschak, that solved my question.

Revision history for this message
Karl Moskowski (kolpanic-deactivatedaccount) said :
#4

Andy,
I built an application that checks all installed apps' appcasts for updates, and lets you launch ones with available updates. I was planning on making it open-source, but before putting it up under my own name, I thought I'd ask if you'd like to add it to Sparkle as a companion project. Are you interested?

It's a GC app that's SL-only. Here's a summary of how it works:
- at launch, queues a NSOperation that uses a private Launch Services API to list all installed application; for each found app, checks its Info.plist for existence of SUFeedURL
- for each found Sparkle-enabled app, it queues a concurrent NSOperation that instantiates a SUUpdater for the bundle & checks for updates; the NSOperation is the the SUUpdater's delegate; when a valid update is found, it adds an object to an in-memory CoreData db
- the UI is a NSCollection view listing each available app with version info; you can launch selected apps to do the real check & update

I had to use a slightly hacked version of Sparkle FW to:
- suppress errors when apps don't use https: or signed updates
- notify the delegate in case of invalid appcast (to end the concurrent NSOperation)
- a couple of other things I can't remember at the moment

Revision history for this message
Andy Matuschak (andymatuschak) said :
#5

Very cool, Karl! I'd love to see what you've built; got a link to screenshots or source?

As for it being a Sparkle companion project, I'd want to spend time making sure it presents a consistent experience, qualification, etc, and I probably don't have the resources for that right now. But I'd be happy to link to your project!

Revision history for this message
Karl Moskowski (kolpanic-deactivatedaccount) said :
#6

I haven't hosted it anywhere yet. I can send you the Xcode project
this evening, or just a build of the app to start.

Revision history for this message
Karl Moskowski (kolpanic-deactivatedaccount) said :
#7

Andy, I've put Coruscation source & built binary on BitBucket.

http://bitbucket.org/kolpanic/coruscation/

Revision history for this message
Andy Matuschak (andymatuschak) said :
#8

An intriguing start, Karl! Keep it up.

Revision history for this message
Karl Moskowski (kolpanic-deactivatedaccount) said :
#9

Thanks, Andy. I hope you don't mind my using the Sparkle icon for the app. If you can think of any ideas for improvement, I'd be glad to hear them.

Feel free to link to the BitBucket repo, too.