Updater.exe and related CtrlLib routines can save a lot of maintainance costs when deploying new application versions at large client's side.
The ideas is this: New version is placed to the network drive. When user starts his local application, it checks network directory for the new version. If there is any, application starts updater and exits. Updater overwrites current version with new one and restarts it. Note that the need for updater is caused by fact that .exe cannot overwrite itself.
See CtrlLib/Update for details.
Now the funny part is that it can update even more than itself - it is used to update any files in app directory. So updater.exe itself is updated by application. Last development has gone even so far, that Oracle client installation is "updated", that in fact means that deploying our Oracle apps can be done by copying two files to clients directory - app itself and "q.ini" file, which basically contains information about network directory in UPDATE=path entry.
Example - this is how some of our app GUI_APP_MAIN looks like:
SelfUpdate(); // SelfUpdate updates updater.exe first and then app itself
UpdateFile("cs-cz.scd"); // Update czech spelling checker
UpdateFile("logo.bmp"); // Update company logo to be used in reports