Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best Practices for Self Updating Desktop Application in a network environment

I have searched through google and SO for possible answers to this question, but can only find small bits of information scattered around the place, most of which appear to be personal opinion.

I'm aware that this question could be considered subjective, but I'm not looking for personal opinion, rather facts with reasons (e.g. past experience) or even a single link to a blog/wiki which describes best practices for this (this is what I'd prefer to be honest). What I'm not looking for is how to make this work, I know how to create a self updating desktop application.

I want to know about the best practices for creating a self updating desktop application. The sort of best practices I'm especially curious about are:

  • Do you force an update if the clients software is out of date, but not going to break when trying to communicate with other version of the software or the database itself? If so how do you signify this breaking change?
  • How often should you check for updates? Weekly/daily/hourly and exactly why?
  • Should the update be visible to the user or run behind the scenes from a UI point of view?
  • Should you even notify the user that there is an update available if it is not a major update? (for instance fixing a single button in a remote part of the application which only one user actually requires)
  • Should you try to patch the application or do you re-download the entire application from scratch Macintosh style?
  • Should you allow users to update from a central location or only allow updating through the specified application? (for closed business applications).

Surely there is some written rules/suggestions about this stuff? One of the most annoying things about a lot of applications is the updating, as it's hard to find a good balance between "out of date" and "in the users face".

If it helps consider this to be written in .net C# for a single client, running on machines with constant available connectivity to the update server, all of these machines talk to each other through the application, and all also talk to a central database server.

like image 706
Jay Avatar asked Dec 16 '09 06:12

Jay


1 Answers

One best practice that many software overlook: ask to update when the user is closing your application, NOT when it has just launched it.

It's incredible how many apps don't do that (Firefox, for example). You just ran the app, you want to use it now, and instead, it prompts you if you want to update, which of course is going to take 5 minutes and require restarting the app.

This is non-sense. Just do the update at the end.

like image 166
gregschlom Avatar answered Sep 20 '22 12:09

gregschlom