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.