ece3f8bf78
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
99 lines
2.9 KiB
Markdown
99 lines
2.9 KiB
Markdown
# 📦 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:
|
|
|
|
```bash
|
|
# 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](https://downloads.hydraulic.dev/conveyor/download.html) und laden Sie die neueste `linux-amd64.tar.gz` Datei herunter.
|
|
|
|
2. **Manuelle Installation:**
|
|
```bash
|
|
# Entpacken
|
|
tar -xvf hydraulic-conveyor-*-linux-amd64.tar.gz
|
|
# In den Pfad verschieben
|
|
sudo mv conveyor /usr/local/bin/
|
|
```
|
|
|
|
3. **Verifizieren:**
|
|
```bash
|
|
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)
|
|
```bash
|
|
./gradlew :frontend:shells:meldestelle-desktop:packageRpm
|
|
```
|
|
*Ausgabe: `frontend/shells:meldestelle-desktop/build/compose/binaries/main/rpm/`*
|
|
|
|
### DEB-Paket (Ubuntu/Debian)
|
|
```bash
|
|
./gradlew :frontend:shells:meldestelle-desktop:packageDeb
|
|
```
|
|
*Ausgabe: `frontend/shells:meldestelle-desktop/build/compose/binaries/main/deb/`*
|
|
|
|
### Portable Version (Ohne Installation)
|
|
```bash
|
|
./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
|
|
```bash
|
|
./gradlew :frontend:shells:meldestelle-desktop:jvmJar
|
|
```
|
|
|
|
### Schritt 2: Pakete bauen
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
sudo ./setup-firewall-linux.sh
|
|
```
|