Release-Anhaenge: der Name entscheidet - und ein Pruefstand dafuer
Der Fehler Das Release war angelegt, die EXE hing dran - und der Updater haette trotzdem nie etwas gefunden. Der Anhang trug die Nummer im Namen, gesucht wird aber "Steuerrechnungstool.exe" (version.EXE_NAME). Die Nummer kommt erst beim Ablegen dazu. Das Tueckische: nichts schlaegt fehl. Der Updater meldet freundlich "Aktuell. Kein Update noetig." und startet die alte Fassung. Zweiter Fund: die Pruefsummen standen nur im Release-TEXT. Der Updater liest sie aus einer angehaengten Datei <exe>.sha256. Ohne die prueft er nur die Groesse - und eine verfaelschte Datei hat genau die richtige Groesse. bauen.py legt jetzt release/ an, pruef_release.py prueft gegen das echte Repository nach. Beide Dateien sind in beiden Programmen gleich. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
This commit is contained in:
parent
96aa51ac22
commit
e4619259cb
3 changed files with 126 additions and 7 deletions
33
bauen.py
33
bauen.py
|
|
@ -79,7 +79,7 @@ def main():
|
|||
# Bauordner uebernimmt sonst Reste, die es in der Quelle nicht mehr gibt -
|
||||
# und in setup/ laege noch die Datei der VORIGEN Nummer herum. Beim
|
||||
# Ausliefern greift man dann leicht zur falschen.
|
||||
for ordner in ("build", "dist", "setup"):
|
||||
for ordner in ("build", "dist", "setup", "release"):
|
||||
shutil.rmtree(os.path.join(HIER, ordner), ignore_errors=True)
|
||||
|
||||
lauf([sys.executable, "-m", "PyInstaller", "--noconfirm", f"{stamm}.spec"],
|
||||
|
|
@ -94,14 +94,33 @@ def main():
|
|||
lauf([iscc(), f"/DVersion={version.VERSION}", f"/DExeProgramm={mit_nummer}",
|
||||
"Installer.iss"], "Setup")
|
||||
|
||||
# ---- release/ : genau das, was ins Release gehoert ---------------------
|
||||
# Der Anhang, den der Updater sucht, heisst OHNE Nummer - so steht es in
|
||||
# version.EXE_NAME, und danach sucht passendes_release(). Haengt man ihn
|
||||
# mit Nummer an, findet der Updater nie ein Update und meldet stumm
|
||||
# "aktuell". Die Nummer kommt erst beim Ablegen dazu (updater.dateiname).
|
||||
#
|
||||
# Daneben die Pruefsumme als eigene Datei: ohne sie prueft der Updater nur
|
||||
# die GROESSE. Eine Datei, die unterwegs verfaelscht wurde, hat aber genau
|
||||
# die richtige Groesse.
|
||||
freigabe = os.path.join(HIER, "release")
|
||||
os.makedirs(freigabe, exist_ok=True)
|
||||
shutil.copy2(ziel, os.path.join(freigabe, version.EXE_NAME))
|
||||
with open(os.path.join(freigabe, version.EXE_NAME + ".sha256"),
|
||||
"w", encoding="ascii") as f:
|
||||
f.write(summe(ziel) + chr(10))
|
||||
shutil.copy2(os.path.join(HIER, "dist", "Updater.exe"),
|
||||
os.path.join(freigabe, "Updater.exe"))
|
||||
for name in os.listdir(os.path.join(HIER, "setup")):
|
||||
shutil.copy2(os.path.join(HIER, "setup", name),
|
||||
os.path.join(freigabe, name))
|
||||
|
||||
print()
|
||||
print(f"FERTIG | {stamm} {version.VERSION}")
|
||||
for name in sorted(os.listdir(os.path.join(HIER, "dist"))):
|
||||
p = os.path.join(HIER, "dist", name)
|
||||
print(f" {name:44s} {os.path.getsize(p):>10,d} B {summe(p)}")
|
||||
setup = os.path.join(HIER, "setup")
|
||||
for name in sorted(os.listdir(setup)) if os.path.isdir(setup) else []:
|
||||
p = os.path.join(setup, name)
|
||||
print()
|
||||
print(" release/ - genau diese Dateien gehoeren ans Release:")
|
||||
for name in sorted(os.listdir(freigabe)):
|
||||
p = os.path.join(freigabe, name)
|
||||
print(f" {name:44s} {os.path.getsize(p):>10,d} B {summe(p)}")
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue