Search code examples
asp.netsoftware-update

Software Update Notifications


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?


Solution

  • 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)