Drop-Dead Simple Update Checking

I just had this brainstorm and wanted to share.  It should be live in my program by, oh, the end of today:

Checking for updates is a wonderful thing to enable, both because it makes sure your customers have the best-and-brightest version of your product available, and because it lets you see on your web logs “Ahah, that install actually succeeded”.  I wanted to have it ready for my first release (there have been at least 10 mini-releases since then, all with the same version number) but couldn’t figure out a way to do it simply.

Enter the drop-dead simple version checking solution: make a directory on your website (I’d put it in robots.txt too with an exclusion, as its going to have duplicate content and you don’t want it to be a search result anyway).  Populate it with a bunch of HTML files corresponding to your version numbers (e.g. v1.0.htm, v1.01a.htm, beta_release.htm, whatever you want).  All the ones but the “latest” one say “You need to update your software.  Here’s how:”, with your favorite tracking code embedded.  The latest one says “Yep, your software is up to date”, has the tracking code, and maybe gives a bit of advice or something (hey, why miss an opportunity to sell to people).  Every time you add a new version, you change the version number in the executable/resource file/wherever, rename your up-to-date page to the new number, and put an out-of-date page in place of the old page.

BAM.  This takes only 10 seconds per update, requires no additional programming, and can be done in 100% static HTML (no need to query a CGI script or anything).  Then you put a Check for Updates item in your Help menu, and perhaps pop up a window on program execution the first time its executed (“Thank you for using X.  Would you like to check for updates now?”) and perhaps every 2 weeks or a month after the program is installed.  Its not quite as seemless to the user as, say, Firefox’s automatic updating, but it’s a heck of a lot simpler for you.

Explore posts in the same categories: Uncategorized

5 Comments on “Drop-Dead Simple Update Checking”

  1. John Gunning Says:

    Patrick, great idea. We did just the same thing with our product:


    I found you from BoS – great blog BTW.

  2. Bob Walsh Says:


    Excellent idea!

  3. Robin Says:

    What about using webstart? the company I work for distributes their app this way, although our software is client/server so we need to ensure that everyone is always running the latest code.
    Anyway, interesting site, I’m glad I found it now as I’ve been reading most of it in order, if I’d discovered this in another 6 months, I’d never catch up.

  4. Patrick Says:

    Web start is a wonderful technology. It requires that you make some assumptions about what JRE your audience has (1.4 or higher as I recall) and what level of sophistication they have regarding Internet based applications. I very briefly considered doing Bingo Card Creator as a web application but was of the opinion that most teachers think “web sites” are free and anything you can click on your desktop is not. I think if you were to ask my competitors who have done bingo as a for-profit web application they’d report problems with getting people to open their wallets.

  5. Definitely a good idea. I also implemented this in my own microISV called Ducklet. In fact we were on the launch pad right around the same time.

    The Check for Updates feature reads my currentrelease.txt file. I did a bit of server-side programming so as not to have to make a bunch of duplicate files for all the out-of-date versions, but either way works great.

    I like your idea of adding a tracking code. I haven’t done that part.

    Here’s another nice thing you can do once you’ve got a version file in place: any time the user goes to your web site from within your program–even when they’re not checking for updates–the program appends something like ?usingversion=1.1 to the URL. E.g., if they click an “Online Help” menu or a “(CompanyName) on the Web” menu from within the product, you would append the usingversion argument. I did that, and then I also added a server-side function that compares the usingversion arg with the currentrelease.txt file. If they’re identical, it puts a small footer at the end of the page that says “You have (ProductName) 1.0. This is the latest release.” If the user has an older version, the footer says something like “You have (ProductName) 1.0. An update is available. The current stable release of (ProductName) is 1.0. Buy Now or download a Free Trial.”

    If the usingversion argument is missing, the footer at the bottom says “The current release of (ProductName) is 1.0. Buy now or download a Free Trial” with hyperlinks for Buy Now and Free Trial.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: