0

I am considering implementing some sort of Software Update Notification for one of the web applications I am developing.

There are several questions I came across:

  • Should the update check be executed on the client or on the server?

Client-side means, the software retrieves the most current version information, performs its checks, and displays the update information.

Server-side check means the software sends its version info to the server, which in turn does the calculations and returns information to the client.

My guess is that server-side implementation may turn out to be more flexible and more powerful than client-side, as I can add functionality to the server easily, as long as the client understands it.

  • Where should the update info be displayed?

Is it ok to display on the login screen? Should only admins see it? (this is a web app with a database, so updating requires manipulation of db and web, which is only done by admins). What about a little beeping flashing icon which increases in size as the version gets more obsolete every day ;) ?

  • Privacy issues

Not everybody likes to have their app usage stats broadcast over the internet.

TheOnion question: What do you think?

Georg Fritzsche
  • 97,545
  • 26
  • 194
  • 236
devio
  • 36,858
  • 7
  • 80
  • 143
  • What exactly will you be versioning? i.e. is it the interface, the processes in the dal, the database itself or the storeage media as a whole? – REA_ANDREW Jul 30 '09 at 07:30

1 Answers1

1

Here's what mine does:

  • The update process runs on a low priority background thread. There's absolutely no way for it to ever interfere with the operation of the program.
  • Client sends the current version and the current culture (locale)
  • Server replies with a version number, localized display text to show the user, and the current URLs of the installer and the releases page (showing release notes/change list). There are actually 3 sets of these it sends - the stable version, beta version, and nightly build version.
  • I use a non-modal dialog to present the user with the option to install now, visit the website, or cancel. You could also operate like WinSCP and place your update notification in the system tray. Yet another option is emailing the results to the user when an update is available.

I give a different update message when the client is running a very old version because the product was renamed.

Here's a picture of the way I'm doing it. It's not the greatest in the world, but it's been getting the job done for us and we haven't heard any complaints from the users. nFringe Updater
(source: 280z28.org)

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Sam Harwell
  • 97,721
  • 20
  • 209
  • 280
  • Thanks for your input. I implemented update notifications based on application and version, ignoring locales. http://devio.wordpress.com/2010/03/05/managing-update-notifications-with-dbscript/ – devio Mar 05 '10 at 08:55
  • @devio: Ours isn't localized either. However, the hooks are in place specifically so if we *do* localize it, we can do so purely on the server (so all applicable clients get the message in the newly supported language). In particular, if we have a client complain that users at their company aren't understanding the message, we can have that person do the translation. – Sam Harwell Mar 05 '10 at 18:03