Logo Das Programmlogo steht jetzt klein neben "powered by ravokk" - dort sitzt die Kennung des Werkzeugs, nicht die des Kunden. Eine eigene Kopfzeile hat dieses Programm nicht; oben sind die Reiter. bauen.py Der Weg von der Quelle zur Setup-Datei war eine Folge von Befehlen, die jemand von Hand eintippen musste. Wer einen Schritt vergisst, liefert eine Setup-Datei mit einer alten EXE aus - und sieht es ihr nicht an. Genau das ist heute passiert. Jetzt ist es ein Befehl, die Nummer kommt aus version.py, und am Ende stehen die SHA256-Summen fuer den Release-Text. pruef_start_exe.py Prueft, was kein anderer Pruefstand prueft: ob die GEBAUTE EXE ein sichtbares Fenster zeigt. Alle uebrigen fahren das Programm aus der Quelle, dort trat der Fehler nie auf. "Der Prozess laeuft" beweist dabei nichts - er lief ja, waehrend nichts zu sehen war. Aufgeraeumt "Rechnung Campinghof.exe" ist weg; gebaute Dateien gehoeren ins Release, nicht ins Repo. Die .spec-Dateien dagegen schon: ohne sie kann niemand die EXE nachbauen, die der Updater ausliefert. Fassung 1.7.0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
95 lines
3.8 KiB
Text
95 lines
3.8 KiB
Text
; Installer fuer das Rechnungstool (Inno Setup 6)
|
|
;
|
|
; ENTSCHEIDUNGEN, DIE HIER STECKEN - und warum
|
|
; --------------------------------------------
|
|
; 1. INSTALLATION PRO BENUTZER nach %LOCALAPPDATA%\Programs, NICHT nach
|
|
; "Program Files". Grund: der Updater muss die EXE ablegen duerfen. In
|
|
; Program Files darf ein normaler Benutzer nicht schreiben - jedes Update
|
|
; wuerde an fehlenden Rechten scheitern oder eine Administrator-Abfrage
|
|
; erzwingen. Chrome, VS Code, Discord, Teams und Fusion 360 machen es
|
|
; genauso, aus demselben Grund.
|
|
;
|
|
; 2. DIE VERKNUEPFUNG ZEIGT AUF DEN UPDATER, nicht auf das Programm. So schaut
|
|
; jeder Start zuerst nach einer neuen Fassung. Der Updater startet danach
|
|
; die eigentliche EXE - die ist dabei noch gar nicht in Benutzung und laesst
|
|
; sich deshalb problemlos ersetzen.
|
|
;
|
|
; 3. KEINE DATEN ANFASSEN. Der Installer legt keine Rechnungsordner an, kein
|
|
; Journal, kein Nummernbuch - und beim Deinstallieren wird davon nichts
|
|
; entfernt. Das Programm schreibt aufbewahrungspflichtige Belege
|
|
; (§ 147 AO, zehn Jahre). Ein Deinstallieren darf sie nie mitnehmen.
|
|
;
|
|
; 4. Der Eintrag unter "Apps & Features" entsteht von selbst - Inno Setup legt
|
|
; den Registry-Schluessel unter HKCU an. Da muss niemand von Hand hinein.
|
|
|
|
#define Name "Rechnungstool"
|
|
#define Herausgeber "ravokk"
|
|
#define ExeUpdater "Updater.exe"
|
|
#define Webseite "https://git.pcore.de/TheMockTv/rechnungstool"
|
|
|
|
[Setup]
|
|
AppId={{7F3A9C2E-51D4-4B86-9A17-2C0E8B4D6A31}
|
|
AppName={#Name}
|
|
AppVersion={#Version}
|
|
AppVerName={#Name} {#Version}
|
|
AppPublisher={#Herausgeber}
|
|
AppPublisherURL={#Webseite}
|
|
AppSupportURL={#Webseite}/issues
|
|
AppUpdatesURL={#Webseite}/releases
|
|
|
|
; --- pro Benutzer, ohne Adminrechte ---
|
|
PrivilegesRequired=lowest
|
|
; Der Zielordner ist NICHT waehlbar. Wer hier "Programme" auswaehlen
|
|
; koennte, braeche sich den Updater: dort darf ein normaler Benutzer
|
|
; nicht schreiben. Chrome, Teams und Discord blenden diese Seite aus
|
|
; demselben Grund aus. In "Programme" gehoert hoechstens eine
|
|
; Verknuepfung - und die liegt ohnehin im Startmenue.
|
|
DisableDirPage=yes
|
|
DefaultDirName={localappdata}\Programs\{#Name}
|
|
DefaultGroupName={#Name}
|
|
DisableProgramGroupPage=yes
|
|
UsePreviousAppDir=yes
|
|
|
|
OutputDir=setup
|
|
OutputBaseFilename=Rechnungstool-Setup-{#Version}
|
|
Compression=lzma2
|
|
SolidCompression=yes
|
|
WizardStyle=modern
|
|
; Das Programmsymbol - auch fuer den Installer selbst und den
|
|
; Eintrag unter "Apps & Features".
|
|
SetupIconFile=assets\programm.ico
|
|
UninstallDisplayIcon={app}\{#ExeProgramm}
|
|
ArchitecturesInstallIn64BitMode=x64compatible
|
|
|
|
; Erprobungsfassung - das steht auch im Programm selbst.
|
|
AppComments=Erprobungsfassung. Benutzung auf eigene Gefahr.
|
|
|
|
[Languages]
|
|
Name: "deutsch"; MessagesFile: "compiler:Languages\German.isl"
|
|
|
|
[Tasks]
|
|
Name: "desktopicon"; Description: "Verknüpfung auf dem Desktop anlegen"; \
|
|
GroupDescription: "Zusätzliche Verknüpfungen:"; Flags: unchecked
|
|
|
|
[Files]
|
|
; Der Updater - das ist, was der Benutzer startet.
|
|
Source: "dist\{#ExeUpdater}"; DestDir: "{app}"; Flags: ignoreversion
|
|
; Das Programm selbst, mit der Nummer im Namen. Der Updater erkennt daran,
|
|
; was installiert ist, und legt neue Fassungen daneben statt darueber.
|
|
Source: "dist\{#ExeProgramm}"; DestDir: "{app}"; Flags: ignoreversion
|
|
|
|
[Icons]
|
|
; Beide Verknuepfungen zeigen auf den UPDATER, nicht auf das Programm.
|
|
Name: "{group}\{#Name}"; Filename: "{app}\{#ExeUpdater}"
|
|
Name: "{group}\{#Name} deinstallieren"; Filename: "{uninstallexe}"
|
|
Name: "{userdesktop}\{#Name}"; Filename: "{app}\{#ExeUpdater}"; Tasks: desktopicon
|
|
|
|
[Run]
|
|
Filename: "{app}\{#ExeUpdater}"; Description: "{#Name} jetzt starten"; \
|
|
Flags: nowait postinstall skipifsilent
|
|
|
|
[UninstallDelete]
|
|
; Nur die Buchfuehrung des Updaters.
|
|
; NICHTS von den Daten des Betriebs - keine Rechnungen, kein Journal, kein
|
|
; Nummernbuch. Die liegen ohnehin woanders und muessen zehn Jahre bleiben.
|
|
Type: files; Name: "{app}\installiert.json"
|