StableUpdate

StableUpdate is a cross platform library for automatic update of the installed applications on the client side. It supports the automated creation, detection, downloading, installation and removing of the service packs.

Features
StableUpdate offers strict version control, upgrading between the two defined version numbers only and supports the existence of the multiple versions between the numerous clients. Single files are updated as a unit, but for the .jar and .zip archives only the changed part need to be transferred. All changes for the certain update are transferred in a single packed archive. The updates are generated comparing the old and updated installations on the developer side with the provided update generator. If the user notices that the updated software actually works worse, she can also uninstall the update, also in a user friendly way.

This tool supports mirrors, storing the bulk update data in multiple servers that may change location over time and only needs to reach the .xml configuration file which must be available in one of the several preconfigured web locations. This file contains the checksums for the update files that are verified on the client side, increasing security.

StableUpdate displays release notes for each update and, if needed, provides the mini announcement desk.

Server and Client
On the client side, the update session is activated by calling the agreed procedure in the linked library (usually after the user selects update action from menu). The activated module interacts with the user with a built-in GUI.

On the server side, requirements are reduced to minimum—checking and downloading all needed files via HTTP.

The preparation of new updates is also comparatively user friendly, including generating new configuration files required for upload to the list of expected locations.

History
The project was started in 2004 and it is now continued by the second maintainer. It is now used as an update module in various areas, from experimental research software to pharmacy databases. It needs attention to configure, but, as one of its users says, "Once it worked though, it seemed to work really well."