This repository has been archived by the owner on Jul 1, 2020. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 51
Flow of Execution
Süleyman Yasir KULA edited this page Mar 5, 2020
·
5 revisions
SimplePatchTool follows these steps while patching applications:
- download VersionInfo from the server
- if VersionInfo is encrypted/signed, decrypt/verify it (optional)
- check if servers are currently under maintenance (optional)
- compare hashes and sizes of the local files with VersionInfo to see if all files are up-to-date
- check if we need admin permissions to update the local files
- check if there are multiple running instances of the application (optional)
- determine the cheapest patch type
- check if there is enough free disk space
- (incremental patching) for each incremental patch to apply:
- verify that PatchInfo for that incremental patch exists on the server (optional)
- verify that diff files for this patch exist on the server and match the signature provided in VersionInfo (optional)
- download the PatchInfo
- if PatchInfo is encrypted/signed, decrypt/verify it (optional)
- download the diff files as a compressed tar archive and decompress/extract the archive
- apply diffs to local files
- if there are any renamed files/folders in this patch, rename them (experimental, not documented yet)
- (repair patching) for each changed file in the version:
- verify that the newest version of the file exists on the server and matches the signature provided in VersionInfo (optional)
- download the file from the server and decompress it
- replace local file with the decompressed file
- (installer patching):
- verify that the compressed archive file exists on the server and matches the signature provided in VersionInfo (optional)
- download the archive file from the server and decompress/extract it
- replace each changed local file with the decompressed file
- check if local files are now up-to-date. If somehow some files are still not up-to-date, try executing a repair patch
- delete any obsolete local files
- (self patching) create a txt file that holds basic commands for the self patcher to execute (like moving/deleting files)
- (self patching) terminate the app and run the self patcher