Download and install updates (.deb) #31

Open
opened 2026-02-08 16:20:23 +00:00 by forbes · 0 comments
Owner

Goal

Download the correct asset for the current install method, verify checksum, and install.

Implementation

  • Detect install method at runtime:
    • os.environ.get("APPIMAGE") -> AppImage
    • os.path.exists("/opt/kindred-create") -> .deb
    • Fallback -> open browser to release page
  • Asset selection: match .deb filename pattern from release assets
  • Download to ~/.cache/kindred-create/updates/ with QProgressDialog
  • Download corresponding .sha256 file, verify checksum
  • Install:
    • .deb: pkexec dpkg -i <path> for privilege escalation, prompt restart on success
    • AppImage (future): replace binary at $APPIMAGE path, prompt restart
    • Fallback: open release URL in browser via QDesktopServices.openUrl()
  • Clean up old downloads in cache dir on startup

Depends on

  • #30 (notification UI)

Files

  • src/Mod/Create/update_checker.py (extend)
## Goal Download the correct asset for the current install method, verify checksum, and install. ## Implementation - Detect install method at runtime: - `os.environ.get("APPIMAGE")` -> AppImage - `os.path.exists("/opt/kindred-create")` -> .deb - Fallback -> open browser to release page - Asset selection: match `.deb` filename pattern from release assets - Download to `~/.cache/kindred-create/updates/` with QProgressDialog - Download corresponding `.sha256` file, verify checksum - Install: - .deb: `pkexec dpkg -i <path>` for privilege escalation, prompt restart on success - AppImage (future): replace binary at `$APPIMAGE` path, prompt restart - Fallback: open release URL in browser via `QDesktopServices.openUrl()` - Clean up old downloads in cache dir on startup ## Depends on - #30 (notification UI) ## Files - `src/Mod/Create/update_checker.py` (extend)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#31