Internal Update Procedure¶
The method pyautoupdate.Launcher.update_code() performs the complete
update automatically. It has three parts: checking for updates,
retrieving the new versions, and applying the update.
Checking for Updates¶
The method pyautoupdate.Launcher.check_new() checks to see if an update
is available.
To check for new updates, the program sends a HTTP GET request for
version.txt to the server. This file contains a version number formatted
according to PEP 440 and is compared with a locally stored version number.
The new version is saved into the file .queue, and the request is logged
into version_check.log as described in Project Structure.
Retrieving New Versions¶
The method pyautoupdate.Launcher._get_new() downloads the new version from
the server.
If the file .queue exists, the program sends a HTTP GET request for the
new archive. It then unpacks the archive into the download directory
.pyautodownloads and removes the archive if it was extracted successfully.
Applying Updates¶
The method pyautoupdate.Launcher._replace_files() replaces the existing
files with the new files from the server.
This method first acquires a lock to ensure that it does not blindly update
files that may be in use by the developer program. Then, it moves the code files
listed in filelist.txt into a temporary directory. It copies the files
from .pyautodownloads into the existing directory and creates a new
filelist.txt based on the new files. Finally, it removes the backups in the
temporary directory and releases the lock.