Skip to content

feat(update): installer la nouvelle AppImage depuis l'application (utilisateur ou tous via pkexec) - #8

Merged
Paullux merged 3 commits into
mainfrom
feat/appimage-self-update
Oct 17, 2026
Merged

Paullux merged 3 commits into
mainfrom
feat/appimage-self-update

Conversation

@Paullux

@Paullux Paullux commented Oct 17, 2026

Copy link
Copy Markdown
Member

Contenu

Installation de la nouvelle AppImage depuis l'application (Aide > À propos) :

  1. téléchargement + SHA-256 (déjà en place), puis « Installer maintenant ? » ;
  2. si l'AppImage est installée pour l'utilisateur : installation directe, sans mot de passe ; si elle est installée pour tous ou n'est pas installée : choix « pour moi » ou « pour tous » ;
  3. « pour tous » passe par pkexec : la fenêtre d'authentification est celle du système, l'application ne voit jamais le mot de passe ;
  4. proposition de relancer la nouvelle version.

Sécurité (installation en root)

  • le script est passé à pkexec en texte (bash -c) : le montage FUSE de l'AppImage n'est pas lisible par root, et aucun fichier ne peut être remplacé pendant l'authentification ;
  • --sha256 : en root, le fichier est d'abord copié dans un dossier réservé à root, puis la copie est vérifiée ;
  • en root, aucune icône ni aucun fichier utilisateur n'est lu ou exécuté (l'icône déjà installée est conservée) ;
  • install.sh est embarqué dans l'AppImage (usr/share/pdf-equilibrist/install.sh), plus de téléchargement nécessaire.

Aussi

  • traductions anglaises des textes de la fenêtre ; le workflow AppImage recompile le .qm (le .qm versionné peut être en retard) ;
  • CI : le script embarqué est exécuté (installation utilisateur dans un HOME vide, mauvaise somme refusée, désinstallation).

Non testé

L'interface (QProcess, QMessageBox, relance) et pkexec ne sont pas couverts par la CI : à essayer à la main sur une machine Linux avant de fusionner. Les fonctions pures sont testées (tests/test_update_appimage.py).

🤖 Generated with Claude Code

Paullux and others added 3 commits October 17, 2026 19:06
…on (utilisateur ou tous via pkexec), relance

- install.sh embarqué dans l'AppImage ; option --sha256 (revérifiée en root sur une copie) ;
  en root, aucune icône ni fichier utilisateur n'est lu ou exécuté
- update.py : portée d'installation (user/system/none), commande (pkexec, script passé en texte), relance sans
  les variables de l'AppImage en cours
- fenêtre À propos : installer maintenant, choix pour moi / pour tous, sortie de l'installation, relancer
- traductions anglaises des nouveaux textes ; compilation du .qm dans le workflow AppImage
- CI : le script embarqué est exécuté (installation utilisateur, somme refusée si fausse, désinstallation)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t absent (WSL, bureau minimal)

pkexec absent ou sans agent d'authentification : l'application demande le mot de passe dans sa fenêtre et
l'envoie à sudo -S par l'entrée standard (jamais en argument), avec le même script en texte et la même somme.
Traductions et tests ajoutés.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…par Bandit (B107)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Paullux
Paullux merged commit 2a604ea into main Oct 17, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant