# M15 - Arbeitspakete ## Geltungsbereich Dieses Dokument beschreibt ausschließlich die Arbeitspakete für den definierten Meilenstein **M15 – MSI-Installer (V3.0)**. Der Stand **V2.5** (M14 abgeschlossen) wird als vollständig umgesetzt vorausgesetzt: - Modul `pdf-umbenenner-packaging` existiert - Maven-Profil `release` ist konfiguriert - `icon.ico`, `PDF-KI-Renamer.bat`, `PDF-KI-Renamer-GUI.bat` liegen unter `pdf-umbenenner-packaging/src/main/packaging/` Die Arbeitspakete sind so geschnitten, dass Opus 4.7 sie in einem Durchgang vollständig umsetzen kann. Nach jedem Arbeitspaket muss `mvn clean verify` (ohne Profil) fehlerfrei durchlaufen. --- ## Zielbild von M15 Nach Abschluss von M15 erzeugt `mvn clean package -P release` einen vollständigen **MSI-Installer** (`PDF-KI-Renamer-2.5.0.msi`) der: - die Anwendung nach `C:\Program Files\PDF KI Renamer\` installiert, - eine Beispiel-Konfiguration nach `C:\ProgramData\PDF KI Renamer\config\application.example.properties` ablegt, - beide Batch-Dateien ins Installationsverzeichnis legt, - einen Startmenü-Eintrag für den GUI-Start erstellt, - einen Desktop-Shortcut erstellt, - über „Programme und Features" sauber deinstallierbar ist. --- ## Abgrenzungen ### Explizit nicht Bestandteil von M15 - Automatische Konfigurationsauflösung aus `ProgramData` (bleibt `--config`-Sache) - Code-Signing des MSI - Upgrade-Logik (MajorUpgrade, automatisches Deinstallieren alter Versionen) - Änderungen an fachlicher Logik, GUI, headless-Betrieb oder Persistenz - Neue Tests ### Unveränderte Leitplanken - `--type MSI` ersetzt `--type EXE` im Profil `release` - Der Normalbuild (`mvn clean verify`) bleibt unverändert - Bestehende Module außer `pdf-umbenenner-packaging` werden nicht angefasst --- ## Verbindliche M15-Regeln ### 1. Installationsverzeichnis `C:\Program Files\PDF KI Renamer\` ### 2. Konfigurationsverzeichnis `C:\ProgramData\PDF KI Renamer\config\` Die Beispiel-Config wird aus `docs/examples/application.properties` des Projekts in dieses Verzeichnis kopiert und als `application.example.properties` abgelegt. ### 3. Batch-Dateien Beide Batch-Dateien landen im Installationsverzeichnis. Die Pfade in den Batch-Dateien müssen auf das Installationsverzeichnis angepasst werden (nicht mehr relativ per `%~dp0`, sondern absolut via Installationspfad-Variable oder weiterhin relativ – beides ist akzeptabel solange es funktioniert). ### 4. Startmenü & Desktop - Startmenü-Gruppe: `PDF KI Renamer` - Startmenü-Eintrag: `PDF KI Renamer` → startet GUI - Desktop-Shortcut: `PDF KI Renamer` → startet GUI ### 5. Deinstallation Saubere Deinstallation über „Programme und Features". Vom Installer angelegte Dateien werden entfernt. Nutzerdaten in `ProgramData` (Konfiguration, Logs, DB) werden **nicht** gelöscht. --- ## AP-001 MSI-Typ und Installer-Ressourcen vorbereiten ### Voraussetzung M14 ist abgeschlossen. `mvn clean verify` ist grün. ### Ziel Das Profil `release` erzeugt einen MSI statt einer EXE, und alle notwendigen Installer-Ressourcen liegen bereit. ### Muss umgesetzt werden 1. In `pdf-umbenenner-packaging/pom.xml` im Profil `release`: - `EXE` → `MSI` - Folgende Windows-spezifische jpackage-Optionen ergänzen: ```xml true true PDF KI Renamer true false PDF KI Renamer ``` 2. Beispiel-Konfiguration als Installer-Ressource bereitstellen: - `docs/examples/application.properties` nach `pdf-umbenenner-packaging/src/main/packaging/application.example.properties` kopieren (als versionierte Kopie im Modul – nicht das Original verschieben). 3. `mvn clean verify` muss weiterhin grün bleiben. ### Fertig wenn - `MSI` in der POM gesetzt - Windows-Optionen konfiguriert - `application.example.properties` unter `src/main/packaging/` vorhanden - `mvn clean verify` grün --- ## AP-002 ProgramData-Verzeichnis und Beispiel-Config im Installer verankern ### Voraussetzung AP-001 ist abgeschlossen. ### Ziel Der MSI-Installer legt beim Installieren die Beispiel-Config unter `C:\ProgramData\PDF KI Renamer\config\application.example.properties` ab. ### Technischer Hintergrund jpackage unterstützt `--app-content` zum Hinzufügen zusätzlicher Dateien in das Anwendungs-Image. Diese landen jedoch im Installationsverzeichnis, nicht in `ProgramData`. Für `ProgramData` gibt es zwei Wege: - **Weg A**: jpackage `--resource-dir` mit WiX-Override (komplex, fehleranfällig) - **Weg B**: Die Beispiel-Config über `--app-content` ins Installationsverzeichnis legen und in der Dokumentation beschreiben, dass der Nutzer sie nach `ProgramData` kopieren soll (einfach, robust) **Verbindlich für M15: Weg B.** ### Muss umgesetzt werden 1. `application.example.properties` via `--app-content` in das Anwendungsverzeichnis einbinden: ```xml src/main/packaging/application.example.properties ``` 2. `mvn clean verify` muss weiterhin grün bleiben. ### Fertig wenn - `application.example.properties` ist in der jpackage-Konfiguration als `appContent` eingebunden - `mvn clean verify` grün --- ## AP-003 Desktop-Shortcut konfigurieren ### Voraussetzung AP-002 ist abgeschlossen. ### Ziel Der Installer erstellt zusätzlich einen Desktop-Shortcut. ### Technischer Hintergrund jpackage unterstützt Desktop-Shortcuts über `--win-shortcut`. `true` ist bereits in AP-001 gesetzt – das erzeugt jedoch primär einen Startmenü-Eintrag. Für einen **Desktop**-Shortcut ist ein zusätzlicher WiX-Override nötig. Prüfe zunächst ob `true` in Kombination mit `false` bereits einen Desktop-Shortcut erzeugt. Falls nicht, dokumentiere dies als bekannte Einschränkung in `betrieb.md` und überspringe den WiX-Override (zu komplex für M15). ### Fertig wenn - Entweder Desktop-Shortcut funktioniert, oder - die Einschränkung ist in `betrieb.md` dokumentiert - `mvn clean verify` grün --- ## AP-004 Dokumentation aktualisieren ### Voraussetzung AP-001 bis AP-003 sind abgeschlossen. ### Ziel Die Projektdokumentation spiegelt den V3.0-Stand korrekt wider. ### Muss umgesetzt werden 1. `docs/betrieb.md` – Abschnitt „Windows-EXE (V2.5)" erweitern zu „Windows-Installer (V3.0)": - MSI-Build-Kommando dokumentieren - Installationsverzeichnis dokumentieren - Hinweis: Beispiel-Config liegt nach Installation im Installationsverzeichnis, muss manuell nach `C:\ProgramData\PDF KI Renamer\config\` kopiert und angepasst werden - Hinweis auf SmartScreen-Warnung (kein Code-Signing) - Headless-Betrieb: Beispiel-Aufruf mit `--config` 2. `CLAUDE.md` aktualisieren: - Build-Kommando für MSI ergänzen ### Fertig wenn - `betrieb.md` vollständig aktualisiert - `CLAUDE.md` aktualisiert - `mvn clean verify` grün - M15 vollständig abgeschlossen