Update README.md

This commit is contained in:
alfian2201 2025-05-04 15:54:14 +08:00
parent d81fe25a8e
commit 80aff376ee

113
README.md
View File

@ -1,3 +1,114 @@
# simple-updator-on-github # Simple GitHub Release Updater
A straightforward GUI updater for Windows applications that checks for new versions hosted on GitHub Releases.
**Features**
Automatic update checking against the `latest` GitHub Release.
Compares a local `version.txt` file with the one in the release assets.
Downloads the new application executable if an update is available.
Simple GUI built with wxPython showing status and download progress.
Launches the updated application automatically after a successful download.
Basic error handling for network and file operations.
**Requirements**
Python 3.x
wxPython library (`pip install wxPython`)
requests library (`pip install requests`)
A GitHub repository configured to host releases.
**How It Works**
The updater reads the `LOCAL_VERSION_FILE` (default: `version.txt`) in its directory to determine the current version. If the file doesn't exist, it assumes version "v0.0.0".
It fetches the `version.txt` file from the assets of the `latest` release in the specified GitHub repository.
The local and remote versions are compared.
If the remote version is newer:
The updater downloads the application executable (specified by `APP_EXE_NAME`) from the assets of the `latest` release.
The downloaded executable replaces the existing one (specified by `DOWNLOAD_DESTINATION`).
The new version string is saved to the local `version.txt`.
A success message is shown.
The newly downloaded application executable is launched.
If the local version is the same or newer, or if an error occurs, appropriate messages are displayed, and the updater closes.
A simple GUI provides feedback throughout the process.
**Setup**
**Configure `updater.py`**
At the top of `updater.py`, modify the configuration constants:
```python
# --- configuration ---
# Change to your own repo
REPO_OWNER = "your-github-username" # CHANGE THIS
REPO_NAME = "your-repo-name" # CHANGE THIS
APP_EXE_NAME = "YourApp.exe" # CHANGE THIS - Name of your main app executable
# --- URLs are generated automatically based on the above ---
VERSION_FILE_URL = f"https://github.com/{REPO_OWNER}/{REPO_NAME}/releases/latest/download/version.txt"
DOWNLOAD_URL_TEMPLATE = f"https://github.com/{REPO_OWNER}/{REPO_NAME}/releases/latest/download/{APP_EXE_NAME}"
# --- Local file configuration ---
LOCAL_VERSION_FILE = "version.txt"
DOWNLOAD_DESTINATION = APP_EXE_NAME # Usually keep this the same as APP_EXE_NAME
# --- end up ---
```
`REPO_OWNER`: Your GitHub username or organization name.
`REPO_NAME`: The name of the repository containing your application releases.
`APP_EXE_NAME`: The exact filename of your main application's executable (e.g., `MyCoolApp.exe`). This file *must* be present in your GitHub Release assets.
**Prepare Your GitHub Repository and Releases**
You need a public (or private, if you handle authentication, which this script *doesn't*) GitHub repository.
Use the GitHub Releases feature to publish new versions of your application.
**Crucially:** For *every* release you want the updater to recognize, you **must** upload two specific files as release assets:
`version.txt`: A plain text file containing only the version string for that release (e.g., `v1.0.0`, `v1.1.2`, `v2.0-beta`). This string will be compared against the local `version.txt`.
Your Application Executable: The compiled `.exe` file of your main application, named *exactly* as specified in the `APP_EXE_NAME` configuration variable (e.g., `YourApp.exe`).
The updater specifically targets the release tagged as `latest`. Make sure you mark your most recent stable release as the "latest release" on GitHub.
**Compile the Updater (Recommended)**
It's highly recommended to compile `updater.py` into an executable (`.exe`) for easier distribution and execution. You can use tools like PyInstaller or Nuitka.
Example using PyInstaller:
```bash
pip install pyinstaller
pyinstaller --onefile --noconsole --name TuneviaUpdater updater.py
```
`--onefile`: Creates a single executable file.
`--noconsole`: Prevents a console window from appearing when the GUI runs.
`--name TuneviaUpdater`: Sets the output filename (e.g., `TuneviaUpdater.exe`).
**Place the Updater and Initial Files**
Place the compiled updater executable (e.g., `TuneviaUpdater.exe`) in the same directory as your main application executable (`YourApp.exe`).
Your application directory should initially look something like this:
```
/YourAppFolder/
TuneviaUpdater.exe (The compiled updater)
YourApp.exe (Your main application, matching APP_EXE_NAME)
version.txt (Optional but recommended: Contains the version of YourApp.exe)
```
If `version.txt` is not present on the first run, the updater will assume version "v0.0.0" and will likely attempt to download the `latest` release if one exists. It's good practice to ship your application with a `version.txt` matching the version of `YourApp.exe`.
**Running the Updater**
Users simply run the compiled updater executable (e.g., `TuneviaUpdater.exe`).
It will check for updates based on your configuration.
If an update is found, it will download and replace `YourApp.exe` and update `version.txt`.
It will then attempt to launch the new `YourApp.exe`.
If no update is needed, it will display a message and close.
**Example GitHub Release Structure**
For a release (e.g., `v1.1.0`) marked as `latest`:
**Release v1.1.0**
*(Description...)*
**Assets:**
`YourApp.exe` (Size: 15.2 MB)
`version.txt` (Size: 6 Bytes) <- *Content: "v1.1.0"*
Source code (zip)
Source code (tar.gz)
**Best Practices**
Always compile the updater script to `.exe` using the `--windowed` option for a better user experience.
Use consistent versioning (e.g., Semantic Versioning like `v1.0.0`, `v1.1.0`). Ensure the `version.txt` content exactly matches the version you want to represent.
Double-check that the required assets (`version.txt` and the correctly named `APP_EXE_NAME`) are uploaded to **every** GitHub Release intended for updates.
Ensure your `latest` release on GitHub always points to the version you want users to update to.
Consider code signing your updater and application executables to improve trust and reduce warnings from Windows SmartScreen or antivirus software.# simple-updator-on-github
a simple updator for an aplication to get update a simple updator for an aplication to get update