IcoBlog: Standardizing Software Updates

The official Blog of Iconico & SoftwareMarketingResource

Thursday, May 22, 2008

Standardizing Software Updates

As shareware authors we've all written chunks of code that fire up an Internet connection when the software opens and silently check to see if a new version is available. Sometimes these can be a little annoying, Subversion has a habit of showing me a little popup window every single time that I use it to state that a new build has gone up, yes thanks guys but I really don't care that I'm a few dot releases behind!

Obviously a better design is needed here so i don't have to click the 'Ok' button, a simple status bar message in the main window would do it, but these are user interface issues and I digress!

After writing my last post on standardization of e-commerce providers it struck me that software updating is another place where standardization might be really useful. I'm usually a PC guy, but occasionally I see something that Apple have done very nicely and one of those is it's updater, which looks something like this.

The great thing about this is that all of your software updates are right there, in one place, easy to see and with details on what's in the update. Now as far as I'm aware the same type of global software updater for every piece of software doesn't exist for Windows. This is as you might expect, there's more Windows software out there and Microsoft have historically exerted less control over their application providers than Apple has. The closest thing I could find was this little app from VersionTracker which uses their online database to report updates.

Certainly on the right track but one star out of five on a download.com review doesn't exactly inspire confidence. I can understand why it only got one star too; there's no standard way of writing the update code and it's basically guessing using the name of the executable!

So what's needed is this. If all our PCs had on them a single XML file which listed the current software installed and how to get an update of it then we'd be set. The XML file would need:

- The name of the software
- The current version number
- The URL to check for updates

The next part is this, the URL which checks for updates brings back another URL file, and for this one you could actually use a PAD file. A PAD file (Portable Application Description) is an XML file with a bunch of information about the software, and it's widely used by independent software vendors. The important thing for our purposes here is that the PAD file has the current version number of the software, and also the URL of the installer and notes on what's changed in the latest version. If you couple this with the desktop file list above then that's all you need to build a global software updater!

What I like about this solution is that it's going to benefit all software developers. It's a single place for file data to be stored, and the actual application that does the updating is independent of the desktop XML file itself. Obviously it's going to need traction in the community to get going, and there would have to be agreement on where the file is stored and how applications should write to it but I think that it should benefit all. in addition, once this global software list is in place you should be able to start doing some really interesting things with it, but I'll leave all that for another post.
Labels: ,


Anonymous said...
Hey Nico, You're right. This is something I'd love to see, even if only from a usability standpoint. It seems like every windows box has 25 separate update services. We need something akin to debian's apt-get system.
Unknown said...
I don't know Debian very well, but I think a very basic opt-in system would be super useful!
Unknown said...
What do you suppose is the best way to integrate the blog with one's personal affiliate site, trading out links to products on the affiliate site?

Or offering a branded edition of the blog? The blog so far has been very helpful.

Thanks, JackKlak
Unknown said...
Seems like you're a bit off-topic here Jack, but I'll reply anyway.

You really need bi-directional links between a site and a supporting blog. Link both websites through a prominent navigational item. You can also add in your latest blog posts on your website as a sidebar, this is something that we'll be doing with Iconico as soon as we have enough posts. You can also post links to relevent items in your blog sidebar and target affiliate pages in blog posts. As long as it's good relevent content then your site visitors will follow the links.
Unknown said...
FYI: The Apple Software Update utility you show really only shows updates posted by Apple itself and not other 3rd party software. On OS X, it is still common practice for 3rd party software to "phone home" with each invocation (or some interval) of the software to check for that individual softwares update status. I don't think there's anything in Cocoa or the Mac OS that allows you to tie your updates to the system updater. That updater is akin to the Windows Updater that Microsoft supplies in XP and Vista.
Unknown said...
Ah thanks for the clarification Bryan. I'm honestly much more of a PC user than an Apple user, and I assumed that Apple's updater app was a system level process that any app could use.

Thinking a little more about it it wouldn't be too hard for any platform to use the XML format that I've suggested above.

Iconico, Inc. Software Stores

Accurate Design and Development Software

24 Hour Discount Deals on Fantastic Software Applications

Iconico, Inc. Software Services

You Wrote the Code, Now How do you Sell it?

Our Official Blog

© copyright 2004-2009 Iconico, Inc. All Rights Reserved