Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
2.9 KiB
📦 Guide: Desktop App Packaging (Linux, Windows, macOS)
Dieses Dokument beschreibt, wie die Meldestelle Desktop App für verschiedene Betriebssysteme paketiert wird. Wir nutzen einen hybriden Ansatz aus Gradle (Compose-Desktop) für lokale Linux-Builds und Conveyor für das Cross-Packaging (Windows/macOS) von Linux aus.
1. Voraussetzungen
Linux (Entwicklungsrechner / Fedora)
Um native Pakete bauen zu können, müssen folgende Werkzeuge auf dem System vorhanden sein:
# Für RPM-Pakete (Fedora)
sudo dnf install rpm-build
# Für DEB-Pakete (Ubuntu/Debian)
sudo apt install dpkg-dev fakeroot
Conveyor (Cross-Packaging Tool)
Conveyor wird benötigt, um von Linux aus Windows-Installer (.msi) oder macOS-Pakete zu erzeugen.
Installation auf Fedora/Linux: Da automatisierte Skripte manchmal unzuverlässig sind, hier der direkte Weg über das Binär-Paket:
-
Tarball herunterladen: Besuchen Sie https://downloads.hydraulic.dev/conveyor/download.html und laden Sie die neueste
linux-amd64.tar.gzDatei herunter. -
Manuelle Installation:
# Entpacken tar -xvf hydraulic-conveyor-*-linux-amd64.tar.gz # In den Pfad verschieben sudo mv conveyor /usr/local/bin/ -
Verifizieren:
conveyor --version
2. Lokale Linux-Builds (Gradle)
Die schnellste Methode, um während der Entwicklung ein installierbares Paket für das eigene System zu erstellen.
RPM-Paket (Fedora)
./gradlew :frontend:shells:meldestelle-desktop:packageRpm
Ausgabe: frontend/shells:meldestelle-desktop/build/compose/binaries/main/rpm/
DEB-Paket (Ubuntu/Debian)
./gradlew :frontend:shells:meldestelle-desktop:packageDeb
Ausgabe: frontend/shells:meldestelle-desktop/build/compose/binaries/main/deb/
Portable Version (Ohne Installation)
./gradlew :frontend:shells:meldestelle-desktop:createDistributable
Ausgabe: frontend/shells:meldestelle-desktop/build/compose/binaries/main/app/
3. Cross-Packaging mit Conveyor
Conveyor nutzt die kompilierte JAR-Datei und schnürt daraus Pakete für alle Zielplattformen.
Schritt 1: JAR erstellen
./gradlew :frontend:shells:meldestelle-desktop:jvmJar
Schritt 2: Pakete bauen
# Erstellt den Windows-Installer und die HTML-Downloadseite
conveyor make site
Schritt 3: Ergebnisse
Die fertigen Installer (z.B. .msi für Windows) befinden sich im neu erstellten Ordner output/.
4. Problembehandlung & Optimierung
Native Access Warnungen
Die App benötigt Zugriff auf native Bibliotheken (Netty/SQLite). Der notwendige Parameter --enable-native-access=ALL-UNNAMED ist bereits fest hinterlegt.
Firewall-Konfiguration
Für Netzwerk-Tests (Discovery/Chat) müssen die Ports 8090, 8080 und 5353 (UDP) geöffnet sein. Nutzen Sie dafür das bereitgestellte Skript:
sudo ./setup-firewall-linux.sh