Auto-update an application on Python
Project description
cxupdater
The library for making updates package and the auto-update based on cx_Freeze.
Installation
Install the current version with PyPI:
pip install cxupdater
Or from Github:
pip install https://github.com/oleg-sung/cxupdater/archive/main.zip
Usage
- Create the update package using Executable from cx_Freeze and setup from cxupdater:
from cxupdater import setup from cx_Freeze import Executable windows = Executable( 'test.py', target_name='TestApp', icon='some_icon.ico' ) setup( name='TestApp', version='1.0.1', options={ 'build_update': { "optimize": 2, } }, executables=[windows] )
Use build_update command with setup. The command build_update supports the same params build_exe from cx_Freeze.
During the execution of the command, a zip archive will be created containing an intermediate executable file for launching the main application and Updater.exe to update the application automatically.python setup.py build_update - Use the
generate_toml -p path\to\folder\contains\update\packages -u https://example.com(your ftp update server)command or create a .toml with the same name as the application, for example TestApp.toml with the following contents:[cxupdater.package.x32] # or x64 name = "TestApp-1.0.0.win32" version = "1.0.1" url = "https://example/TestApp-1.0.1.win32.zip"
Where there are:- name: The name includes an app's name, version and arch prefix.
- version: Version of the app
- url: The url for downloading update package
- Move TestApp.toml and TestApp-1.0.0.win32.zip to https://example/ (your ftp server for publishing an updates)
- In the code application, create an instance of the update by providing the URL to the file.toml, the current version of the application, implements the delegate of the CxDelegateInterface interface.
from cxupdater import CxUpdater, CxDelegateInterface class Delegate(CxDelegateInterface): def do_processing_update(self, message: dict) -> None: pass def do_not_found_update(self, message: dict) -> None: pass def do_error_update(self, message: dict) -> None: pass def do_exited_update(self, message: dict) -> None: pass def do_finished_update(self, message: dict) -> None: pass def do_start_update(self, message: dict) -> None: pass delegate = Delegate() updater = CxUpdater('https://example/TestApp.toml', '1.0.0', delegate) updater.do_auto_updater()
the do_auto_updater() method starts the process of searching for updates. If an update has been found, run Updater.exe with a UAC request and the transmission of the url for downloading and installing the update package. After that, the Updater will inform us about the update progress using delegate methods. If no update was found, do_auto_updater() returns the status Not found.
Contributing
Bug reports and/or pull requests are welcome
License
The module is available as open source under the terms of the Apache License, Version 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cxupdater-0.3.5.tar.gz.
File metadata
- Download URL: cxupdater-0.3.5.tar.gz
- Upload date:
- Size: 38.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0db15a89081e4db174b4b1aa877bac1a7ca0195e179e3429d26412af2cc772c6
|
|
| MD5 |
6dc446884c77281d2eef7039a1726e15
|
|
| BLAKE2b-256 |
6bdebdcf7356352fb3a6dbe39aa88d14011e6f8f7384a1a20ac16a793e65eac8
|
File details
Details for the file cxupdater-0.3.5-py3-none-any.whl.
File metadata
- Download URL: cxupdater-0.3.5-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef66d6f261dbff9a3905fba36f36e2c58c130a32b36537ce5e367e962f871937
|
|
| MD5 |
7f96f250d85ff33644cedb22485b8329
|
|
| BLAKE2b-256 |
ea7a5731d4b00c90f790cf1a3e415ea0c42b1f0dfcb915fc92b45111fe2f7122
|