#65: MSI-Vorbereitung - jdeps-Modulliste, winUpgradeUuid, BAT-Dateien, Pfad-Hinweise

- addModules-Liste per jdeps aktualisiert: java.prefs und jdk.unsupported.desktop
  neu hinzugefuegt; java.desktop, java.logging und java.xml manuell beibehalten
  (reflektiv genutzt, von jdeps --ignore-missing-deps nicht erkannt)
- jdeps-Ausgabe in pdf-umbenenner-packaging/jdeps-output.txt dokumentiert
- winUpgradeUuid gesetzt (EA8D0149-1401-4D3D-A98D-A2B98DAE5495); darf nie geaendert werden
- BAT-Dateien korrigiert: referenzieren nun %~dp0PDF-KI-Renamer.exe (kein Unterverzeichnis),
  passend zur appContent-Einbettung ins Installationsverzeichnis
- BAT-Dateien via appContent in den MSI-Installer eingebettet
- winShortcut=true und winShortcutPrompt=false bestaetigt (waren bereits korrekt)
- app.version=${revision} bestaetigt (war bereits korrekt nach #67)
- betrieb.md: MSI-Release-Checkliste und Pfad-Empfehlung fuer sqlite.file ergaenzt
- README-icon.md: Ist-Stand dokumentiert (icon.ico ca. 127 KB, kein Platzhalter)
- Offener Punkt fuer Marcus: Laufzeit-Verifikation ohne JDK nach manuellem MSI-Build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-30 14:08:53 +02:00
parent 46fc1d4fa4
commit 51d6168697
6 changed files with 112 additions and 14 deletions
+30
View File
@@ -550,6 +550,36 @@ Installationsverzeichnis ab. **Der Betreiber muss diese Beispieldatei manuell na
Windows-SmartScreen-Warnung, die durch „Weitere Informationen → Trotzdem ausführen" Windows-SmartScreen-Warnung, die durch „Weitere Informationen → Trotzdem ausführen"
bestätigt werden muss. Code-Signing ist für spätere Ausbaustufen vorgesehen. bestätigt werden muss. Code-Signing ist für spätere Ausbaustufen vorgesehen.
**Empfehlung für Prompt- und Konfigurationspfade im MSI-Betrieb:**
Für den MSI-Betrieb (Startmenü, Task Scheduler) wird **empfohlen**,
`prompt.template.file` und `sqlite.file` als **absolute Pfade** zu konfigurieren
oder auf `%APPDATA%`- bzw. `%ProgramData%`-Verzeichnisse zu zeigen.
Relative Pfade beziehen sich auf das Arbeitsverzeichnis, das je nach Startart variiert
(siehe Abschnitt „Prompt-Konfiguration").
### MSI-Release-Checkliste
Die folgende Checkliste ist vor jeder MSI-Auslieferung manuell abzuarbeiten.
- [ ] Neuinstallation auf sauberer Windows-Umgebung ohne vorinstalliertes Java
- [ ] Installation in Installationspfad **mit Leerzeichen** (z. B. `C:\Program Files\PDF KI Renamer\`)
- [ ] Upgrade von installiertem Vorgänger-MSI (kein manuelles Deinstallieren)
- [ ] GUI-Start über Startmenü-Eintrag
- [ ] Headless-Start über `PDF-KI-Renamer.bat` im Windows Task Scheduler
- [ ] Desktop-Shortcut vorhanden oder Einschränkung hier dokumentiert
- [ ] App-Version `3.0.x` im Windows-Installer sichtbar („Programme und Features")
- [ ] Deinstallation sauber Konfiguration unter `C:\ProgramData\PDF KI Renamer\` bleibt erhalten
- [ ] SmartScreen-Warnung erscheint und wird durch „Weitere Informationen → Trotzdem ausführen" bestätigt
- [ ] BAT-Dateien funktionieren bei Installationspfad mit Leerzeichen
- [ ] Anwendungsstart **ohne Entwicklungs-JDK** erfolgreich: GUI-Start, PDF laden und rendern, Verarbeitungslauf starten, Verlaufs-Tab öffnen (Verifikation der `addModules`-Liste)
> **Hinweis zur JDK-freien Laufzeit-Verifikation:** Nur ein erfolgreicher Test
> auf einem System ohne installiertes JDK bestätigt die Vollständigkeit der
> `addModules`-Liste in `pdf-umbenenner-packaging/pom.xml`. Die aktuelle Liste
> wurde per `jdeps --print-module-deps --ignore-missing-deps` ermittelt;
> vollständige Ausgabe in `pdf-umbenenner-packaging/jdeps-output.txt`.
### Build-Kommandos ### Build-Kommandos
**Vollständiger Reactor-Build** (alle Module, Tests, Packaging): **Vollständiger Reactor-Build** (alle Module, Tests, Packaging):
+23
View File
@@ -0,0 +1,23 @@
# jdeps-Ausgabe fuer das Shade-JAR
# Erstellt: 2026-04-30
# Befehl:
# jdeps --print-module-deps --ignore-missing-deps \
# pdf-umbenenner-bootstrap-0.0.1-SNAPSHOT.jar
#
# Ausgabe (einzeilig, Trennzeichen Komma):
java.base,java.compiler,java.management,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.sql,jdk.jfr,jdk.unsupported,jdk.unsupported.desktop
#
# Neu gegenueber vorheriger addModules-Liste:
# java.prefs hinzugefuegt (von jdeps erkannt)
# jdk.unsupported.desktop hinzugefuegt (von jdeps erkannt)
#
# Manuell beibehalten (nicht von jdeps --ignore-missing-deps gemeldet,
# aber zur Laufzeit reflektiv erforderlich):
# java.desktop JavaFX-Grafiksubsystem (ohne explizite statische Abhaengigkeit)
# java.logging Log4j2-JUL-Bridge (reflektiver Zugriff zur Laufzeit)
# java.xml FXML/XML-Parsing (reflektiver Zugriff zur Laufzeit)
#
# HINWEIS: Die Laufzeit-Verifikation ohne Entwicklungs-JDK ist zwingend erforderlich
# (GUI-Start, PDF laden und rendern, Verarbeitungslauf, Verlaufs-Tab oeffnen).
# Nur ein erfolgreicher Test auf einem System ohne JDK bestaetigt die Vollstaendigkeit
# der Modulliste. Anleitung: betrieb.md, Abschnitt "MSI-Release-Checkliste".
+40 -8
View File
@@ -67,10 +67,13 @@
<!-- <!--
Erzeugt den nativen Windows-Installer (MSI) ueber jpackage. Erzeugt den nativen Windows-Installer (MSI) ueber jpackage.
Die Modulliste wurde auf Basis von `jdeps` (print-module-deps) auf dem Die Modulliste wurde per jdeps (print-module-deps, ignore-missing-deps)
Shade-JAR ermittelt und um die zur Laufzeit reflektiv genutzten Module auf dem Shade-JAR ermittelt (Stand 2026-04-30, vollstaendige Ausgabe
java.logging (Log4j2-Bridge) und java.xml (FXML/XML-Parsing) erweitert. in pdf-umbenenner-packaging/jdeps-output.txt) und um die zur Laufzeit
reflektiv genutzten Module java.desktop, java.logging und java.xml erweitert.
WiX Toolset 3.x muss im PATH verfuegbar sein (nur auf der Entwicklungsmaschine). WiX Toolset 3.x muss im PATH verfuegbar sein (nur auf der Entwicklungsmaschine).
Nach dem MSI-Build muss die installierte Anwendung ohne Entwicklungs-JDK
gestartet und verifiziert werden (GUI-Start, PDF rendern, Verlaufs-Tab).
--> -->
<plugin> <plugin>
<groupId>org.panteleyev</groupId> <groupId>org.panteleyev</groupId>
@@ -93,14 +96,31 @@
<destination>${project.build.directory}/dist</destination> <destination>${project.build.directory}/dist</destination>
<icon>${project.basedir}/src/main/packaging/icon.ico</icon> <icon>${project.basedir}/src/main/packaging/icon.ico</icon>
<!-- <!--
Bindet die Beispiel-Konfiguration als zusaetzliche Datei in das Bindet zusaetzliche Dateien in das Anwendungs-Image ein.
Anwendungs-Image ein. Sie landet neben den ausgelieferten JAR-Artefakten Sie landen im Installationsverzeichnis neben der PDF-KI-Renamer.exe.
im Installationsverzeichnis und muss vom Betreiber nach Die Batch-Dateien referenzieren die EXE relativ zu ihrer eigenen
Position (%~dp0PDF-KI-Renamer.exe, kein Unterverzeichnis).
Die Beispiel-Konfiguration muss vom Betreiber nach
C:\ProgramData\PDF KI Renamer\config\ kopiert und angepasst werden. C:\ProgramData\PDF KI Renamer\config\ kopiert und angepasst werden.
--> -->
<appContent> <appContent>
<appContent>src/main/packaging/application.example.properties</appContent> <appContent>src/main/packaging/application.example.properties</appContent>
<appContent>src/main/packaging/PDF-KI-Renamer.bat</appContent>
<appContent>src/main/packaging/PDF-KI-Renamer-GUI.bat</appContent>
</appContent> </appContent>
<!--
Modulliste ermittelt per jdeps (Stand 2026-04-30):
java.base, java.compiler, java.management, java.naming,
java.net.http, java.prefs, java.rmi, java.scripting, java.sql,
jdk.jfr, jdk.unsupported, jdk.unsupported.desktop
Vollstaendige Ausgabe: pdf-umbenenner-packaging/jdeps-output.txt
Manuell ergaenzt (reflektiv genutzt, von jdeps nicht erkannt):
java.desktop - JavaFX-Grafiksubsystem
java.logging - Log4j2-JUL-Bridge
java.xml - FXML/XML-Parsing
Laufzeit-Verifikation ohne Entwicklungs-JDK erforderlich
(Anleitung in betrieb.md, Abschnitt MSI-Release-Checkliste).
-->
<addModules> <addModules>
<module>java.base</module> <module>java.base</module>
<module>java.compiler</module> <module>java.compiler</module>
@@ -109,12 +129,14 @@
<module>java.management</module> <module>java.management</module>
<module>java.naming</module> <module>java.naming</module>
<module>java.net.http</module> <module>java.net.http</module>
<module>java.prefs</module>
<module>java.rmi</module> <module>java.rmi</module>
<module>java.scripting</module> <module>java.scripting</module>
<module>java.sql</module> <module>java.sql</module>
<module>java.xml</module> <module>java.xml</module>
<module>jdk.jfr</module> <module>jdk.jfr</module>
<module>jdk.unsupported</module> <module>jdk.unsupported</module>
<module>jdk.unsupported.desktop</module>
</addModules> </addModules>
<javaOptions> <javaOptions>
<javaOption>-Xms64m</javaOption> <javaOption>-Xms64m</javaOption>
@@ -126,6 +148,13 @@
<winMenuGroup>PDF KI Renamer</winMenuGroup> <winMenuGroup>PDF KI Renamer</winMenuGroup>
<winDirChooser>true</winDirChooser> <winDirChooser>true</winDirChooser>
<winShortcutPrompt>false</winShortcutPrompt> <winShortcutPrompt>false</winShortcutPrompt>
<!--
winUpgradeUuid: Stabiler GUID fuer MSI-Upgrade-Erkennung.
Einmalig gesetzt - darf NIEMALS geaendert werden.
Eine Aenderung wuerde verhindern, dass ein bestehendes MSI
durch das neue MSI automatisch ersetzt wird (Upgrade-Pfad kaputt).
-->
<winUpgradeUuid>EA8D0149-1401-4D3D-A98D-A2B98DAE5495</winUpgradeUuid>
<installDir>PDF KI Renamer</installDir> <installDir>PDF KI Renamer</installDir>
</configuration> </configuration>
</execution> </execution>
@@ -133,8 +162,11 @@
</plugin> </plugin>
<!-- <!--
Kopiert die beiden Start-Batch-Dateien direkt in das EXE-Ausgabeverzeichnis, Kopiert die beiden Start-Batch-Dateien direkt in das MSI-Ausgabeverzeichnis,
damit sie gleichrangig neben dem erzeugten Anwendungsverzeichnis liegen. damit sie auch ausserhalb des MSI-Installers (z. B. fuer manuelle Tests oder
portable Nutzung) gleichrangig neben dem erzeugten Installer liegen.
Hinweis: Im installierten MSI landen die Batch-Dateien ueber appContent
direkt im Installationsverzeichnis neben der EXE.
--> -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@@ -1,3 +1,3 @@
@echo off @echo off
chcp 65001 >nul chcp 65001 >nul
"%~dp0PDF-KI-Renamer\PDF-KI-Renamer.exe" %* start "" "%~dp0PDF-KI-Renamer.exe" %*
@@ -1,3 +1,3 @@
@echo off @echo off
chcp 65001 >nul chcp 65001 >nul
"%~dp0PDF-KI-Renamer\PDF-KI-Renamer.exe" --headless %* "%~dp0PDF-KI-Renamer.exe" --headless %*
@@ -1,8 +1,21 @@
# Icon-Platzhalter # Anwendungsicon
Die Datei `icon.ico` in diesem Verzeichnis ist ein **Platzhalter** (1x1 Pixel, valides `.ico`-Format). Die Datei `icon.ico` in diesem Verzeichnis enthaelt das Anwendungsicon fuer den
Windows-Installer und die installierte EXE.
**Vor dem Release durch echtes Icon ersetzen.**
Das Icon wird beim Ausfuehren von `mvn clean package -P release` durch das Das Icon wird beim Ausfuehren von `mvn clean package -P release` durch das
`jpackage`-Plugin in die erzeugte Windows-EXE eingebettet. `jpackage`-Plugin in die erzeugte Windows-EXE eingebettet.
## Anforderungen an das Icon
- Format: `.ico`
- Mindestgroesse: 256 x 256 Pixel
- Empfohlen: mehrere eingebettete Groessen (16, 32, 48, 64, 128, 256 px),
damit Windows in jeder Anzeigegroe&szlig;e (Taskleiste, Explorer, Desktop-Shortcut)
eine passende Variante verwenden kann.
## Hinweis zum aktuellen Stand
Die Datei `icon.ico` hat eine Groesse von ca. 127 KB und enthaelt ein vollstaendiges
Anwendungsicon. Vor einem oeffentlichen Release sollte geprueft werden, ob das Icon
den aktuellen Gestaltungsrichtlinien und der gewuenschten Branding-Erscheinung entspricht.