Files
meldestelle/docs/02_Guides/Desktop-Packaging-Guide.md
T

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:

  1. Tarball herunterladen: Besuchen Sie https://downloads.hydraulic.dev/conveyor/download.html und laden Sie die neueste linux-amd64.tar.gz Datei herunter.

  2. Manuelle Installation:

    # Entpacken
    tar -xvf hydraulic-conveyor-*-linux-amd64.tar.gz
    # In den Pfad verschieben
    sudo mv conveyor /usr/local/bin/
    
  3. 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