Updater als Starter - die Nummer steht im Dateinamen
Sein Bild (06.09.2026): "der updater schaut beim starten erst: ist auf dem git link eine neue version mit exe? wenn ja, erst laden, ersetzen und dann starten." "einmal pruefen auf vollstaendigkeit." "wir werden den namen mit nummer fuehren - wenn er merkt, eh warte mal, die heisst anders, dann neu machen" DER AUFBAU Der Updater IST der Starter. Er laeuft, BEVOR das Programm laeuft - damit gibt es das Windows-Problem "laufende EXE laesst sich nicht ersetzen" gar nicht. Und weil die installierte Datei die Nummer im Namen traegt (Rechnungstool-1.6.0.exe), wird ueberhaupt nichts ueberschrieben: eine neue Fassung ist eine neue Datei. Die vorige bleibt liegen und ist damit die Rueckfallebene, ohne dass jemand eine Sicherung anlegen muesste. Der Updater sieht am NAMEN, was da ist - er muss keiner Angabe glauben. version.py: die Nummer an EINER Stelle, im Code, in die EXE kompiliert. Sie entspricht dem Release-Tag ohne "v". Zusaetzlich fuehrt der Updater ein eigenes Buch (installiert.json); wer eine Datei umbenennt, verursacht hoechstens einen ueberfluessigen Download. BEIM BAUEN AUFGEFALLEN /releases/latest liefert NICHTS, weil alle Fassungen als Vorabversion gekennzeichnet sind - Forgejo laesst Vorabversionen dort aus. Der Updater nimmt deshalb die Liste und sucht selbst die hoechste Nummer. Waere das erst beim Nutzer aufgefallen, haette der Updater nie ein Update gefunden. Beide Repositories sind oeffentlich - kein Token noetig. Ein Token in einer verteilten EXE waere ohnehin keins. VOLLSTAENDIGKEIT Geladen wird in einen Zwischenordner. Erst wenn GROESSE und (falls das Release eine .sha256 anhaengt) PRUEFSUMME stimmen, kommt die Datei in den Installationsordner. Sonst wird verworfen und die vorhandene Fassung gestartet - lieber kein Update als ein kaputtes. PRUEFSTAND pruef_updater.py prueft vor allem, wann NICHT aktualisiert werden darf: gleiche Fassung, aeltere im Netz, kein passender Anhang, Entwurf, kein Netz, falsche Groesse, falsche Pruefsumme. Und den wichtigsten Punkt: eine halbe Datei erreicht den Installationsordner nie. Alle 18 Pruefstaende gruen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
This commit is contained in:
parent
05ec56e4b8
commit
fec0e8449c
3 changed files with 595 additions and 0 deletions
23
version.py
Normal file
23
version.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Die Fassung dieses Programms - an EINER Stelle.
|
||||
|
||||
Wozu
|
||||
----
|
||||
Ohne eine Nummer im Programm kann kein Updater vergleichen, ob das, was im
|
||||
Repository liegt, neuer ist als das, was hier laeuft. Sie steht deshalb hier
|
||||
und NUR hier; alles andere (Info-Dialog, Updater, Release) liest sie von hier.
|
||||
|
||||
Regel
|
||||
-----
|
||||
Die Nummer wird beim Ausliefern erhoeht und entspricht dem Release-Tag ohne das
|
||||
"v": Tag `v1.6.0` -> VERSION "1.6.0". Wer das eine ohne das andere aendert,
|
||||
baut dem Updater eine Falle.
|
||||
"""
|
||||
|
||||
VERSION = "1.6.0"
|
||||
|
||||
# Zu welchem Repository dieses Programm gehoert - der Updater sucht dort.
|
||||
REPOSITORY = "TheMockTv/rechnungstool"
|
||||
|
||||
# Wie die ausgelieferte Datei im Release heisst.
|
||||
EXE_NAME = "Rechnungstool.exe"
|
||||
Loading…
Add table
Add a link
Reference in a new issue