2011-08-21 21:18:41 +00:00
|
|
|
This tool is a component of an auto-update system. It is responsible for performing
|
|
|
|
the installation of an update after the necessary files have been downloaded
|
|
|
|
to a temporary directory.
|
2011-08-19 18:59:21 +00:00
|
|
|
|
2011-08-21 21:18:41 +00:00
|
|
|
This tool is responsible for:
|
2011-08-19 18:59:21 +00:00
|
|
|
|
2011-08-21 21:18:41 +00:00
|
|
|
* Reading an XML file specifying the contents of an update.
|
|
|
|
|
|
|
|
* Extracting and installing updated files from one or more compressed packages.
|
|
|
|
|
|
|
|
* Removing any files which are no longer needed in the new version of the application.
|
2011-08-19 18:59:21 +00:00
|
|
|
|
2011-08-21 21:18:41 +00:00
|
|
|
* Requesting elevated priviledges if required to install the update.
|
2011-08-19 18:59:21 +00:00
|
|
|
|
2011-08-21 21:18:41 +00:00
|
|
|
* Displaying a simple updater UI and re-launching the main application
|
|
|
|
once the update is installed.
|
2011-08-19 18:59:21 +00:00
|
|
|
|
2011-08-21 21:18:41 +00:00
|
|
|
The tool consists of a single small binary which only has a small number of external
|
|
|
|
dependencies that need to be present on the target system.
|
|
|
|
|
|
|
|
The external dependencies of the updater binary are:
|
|
|
|
|
|
|
|
* The C++ runtime library (Linux, Mac),
|
|
|
|
* pthreads (Linux, Mac),
|
|
|
|
* zlib (Linux, Mac)
|
2011-08-26 16:40:34 +00:00
|
|
|
* native UI library (Win32 API on Windows, Cocoa on Mac, GTK on Linux if available)
|
2011-08-21 21:18:41 +00:00
|
|
|
|
|
|
|
To perform an update, the application (or another separate tool) needs to download
|
|
|
|
the updater binary, an XML file describing the update and one or more zip packages
|
|
|
|
containing the files for the update to a temporary directory. It then needs
|
|
|
|
to invoke the updater, specifying the installation directory, temporary package
|
|
|
|
directory and path to the update script file. The updater then installs the
|
|
|
|
update and restarts the application when done.
|