Everything is explained here:
https://wiki.freepascal.org/LazAutoUpdater .
Overall, it's a simple network downloader, working like that:
- it will check a "GUI=w.x.y.z" variable (the number of the last software released in a directory on the network) published in a networked *.ini file.
- if the "quatro-string" GUI variable is more recent than the current version of the running client soft, then the client can download a WhatsNew.txt file (i.e. a changelog) from the server of the new release. It will then display it.
- if the user accepts the new version, the running client\main application (say, main.exe) runs another tiny application named updatehm.exe located in the same directory as main.exe, and closes itself.
- updatehm.exe downloads the new zipped software version.
- in updatehm.exe, we can set what to do after having downloaded *.zip package: typically, we unzip it, and replace the old main.exe, the old online help, ...
- then updatehm.exe restarts the new main.exe, and closes itself.