; 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"