feat: Installer mit automatischer VirtViewer-Abhängigkeit

- Windows NSIS: lädt VirtViewer MSI herunter und installiert es
  während der App-Installation (via PowerShell + msiexec)
- Linux .deb: Depends: virt-viewer — apt zieht es automatisch rein
- Linux AppImage: Startup-Check mit pkexec-Dialog falls virt-viewer fehlt
- BUILD.md aktualisiert: Installer-Verhalten dokumentiert
This commit is contained in:
2026-07-03 02:56:23 +02:00
parent efb8c7f446
commit 47db668ccc
4 changed files with 172 additions and 31 deletions
+45 -21
View File
@@ -7,35 +7,62 @@ node >= 18
npm >= 9
```
Für Linux-Builds auf Linux-Host, für Windows-Builds entweder Windows oder Wine (cross-build eingeschränkt — lieber nativ bauen).
Für Linux-Builds auf Linux-Host. Windows-Builds entweder nativ auf Windows oder via Wine (cross-build eingeschränkt — nativ empfohlen).
## Entwicklung
---
## Entwicklung (ohne Build)
```bash
npm install
npm start
```
---
## Produktions-Build
### Linux (AppImage + .deb)
### Linux — AppImage + .deb
```bash
npm run build:linux
# Output: dist/Proxmox SPICE Client-1.0.0.AppImage
# dist/proxmox-spice-client_1.0.0_amd64.deb
# Output:
# dist/Proxmox SPICE Client-1.0.0.AppImage ← portable, kein Install nötig
# dist/proxmox-spice-client_1.0.0_amd64.deb ← Paket für apt
```
### Windows (.exe Installer)
**Abhängigkeiten:**
- **AppImage**: Selbst-enthalten (Electron inklusive). Beim ersten Start wird geprüft ob `virt-viewer` installiert ist. Falls nicht: Dialog mit automatischer Installation via `pkexec apt install virt-viewer`.
- **.deb**: Deklariert `virt-viewer` als `Depends` — apt installiert es automatisch mit:
```bash
sudo apt install ./proxmox-spice-client_1.0.0_amd64.deb
```
### Windows — Setup.exe (NSIS)
```bash
# Am besten nativ auf Windows bauen:
npm run build:win
# Output: dist/Proxmox SPICE Client Setup 1.0.0.exe
# Output:
# dist/Proxmox SPICE Client Setup 1.0.0.exe
```
**Abhängigkeiten:**
Der NSIS-Installer prüft automatisch ob VirtViewer installiert ist. Falls nicht:
1. Fragt den Benutzer ob VirtViewer jetzt installiert werden soll
2. Lädt das MSI-Paket von virt-manager.org herunter (~30 MB, benötigt Internet)
3. Installiert VirtViewer still im Hintergrund
Kein manueller Schritt nötig — der Installer kümmert sich um alles.
### Beides auf einmal
```bash
npm run build:linux && npm run build:win
```
---
## Icons
Dateien in `assets/` müssen vor dem Build vorhanden sein:
@@ -52,20 +79,7 @@ sudo apt install imagemagick
convert assets/icon.png -resize 256x256 assets/icon.ico
```
**PNG → ICNS (macOS):**
```bash
# mit electron-icon-maker:
npx electron-icon-maker --input=assets/icon.png --output=assets/
```
## Abhängigkeit: virt-viewer
Der Client startet `remote-viewer` (Teil von virt-viewer). Muss auf dem Zielrechner installiert sein:
- **Linux:** `sudo apt install virt-viewer`
- **Windows:** https://virt-manager.org/download/ → "Windows MSI"
Die App zeigt beim ersten Verbindungsversuch einen Dialog wenn `remote-viewer` nicht gefunden wird.
---
## Verzeichnisstruktur
@@ -85,6 +99,8 @@ proxmox-spice-client/
│ ├── icon.png # Quell-Icon (mind. 512×512)
│ ├── icon.ico # Windows
│ └── icon.icns # macOS (optional)
├── build/
│ └── installer.nsh # Benutzerdefiniertes NSIS-Script (VirtViewer-Install)
├── daten/ # persistente Einstellungen (Docker-Mount)
├── Dockerfile
├── docker-compose.yml
@@ -92,3 +108,11 @@ proxmox-spice-client/
├── package.json
└── BUILD.md
```
---
## Hinweise
- `npm run build:win` auf Linux erfordert Wine (`sudo apt install wine`) für den cross-build. Nativ auf Windows ist stabiler.
- Der NSIS-Installer lädt VirtViewer zur Installationszeit herunter (benötigt Internetverbindung). Wer offline-fähig sein will: VirtViewer-MSI vorher separat verteilen und manuell installieren.
- USB-Redirect, Vollbild (`Shift+F11`), Multi-Monitor: alles via VirtViewer nativ — kein Extra-Setup.