Mac-Installer: native Passwort-Dialoge (kein Terminal-Tippen)

- Homebrew-Installation laeuft ueber osascript administrator privileges:
  macOS zeigt den Passwort-Dialog als Systemfenster, kein sudo im
  Terminal
- Button-Erkennung korrigiert (osascript gibt Button-Text zurueck,
  Exit-Code ist immer 0) -> grep auf 'Weiter' statt ?
- Abbruch wird jetzt korrekt erkannt und quittiert
- Fortschritts-Fenster zeigt klar: Abfragen kommen als eigene Fenster
This commit is contained in:
HMS MediaEngine Agent
2026-09-11 23:16:51 +02:00
parent 1e921a9085
commit bc1da530de
+39 -13
View File
@@ -2,15 +2,23 @@
# HMS MediaEngine macOS-Installation per Doppelklick (Finder) # HMS MediaEngine macOS-Installation per Doppelklick (Finder)
# Ablauf: brew pruefen/installieren -> python3+tk pruefen -> # Ablauf: brew pruefen/installieren -> python3+tk pruefen ->
# GUI-Installer starten (Passwort-Dialog kommt von macOS selbst). # GUI-Installer starten (Passwort-Dialog kommt von macOS selbst).
# Falls python3/tkinter fehlt: Fallback-Dialoge nativ per osascript. # Kein Tippen im Terminal noetig: Passwort-Eingabe laeuft ueber den
# nativen macOS-Dialog (osascript administrator privileges).
cd "$(dirname "$0")" cd "$(dirname "$0")"
echo "HMS MediaEngine Installation" echo "=================================================="
echo " HMS MediaEngine Installation"
echo " (Dieses Fenster zeigt nur den Fortschritt an "
echo " alle Abfragen kommen als eigene macOS-Fenster)"
echo "=================================================="
echo ""
# Dialog mit Buttons: gibt nur bei 'Weiter' true zurueck
eingabe() { eingabe() {
osascript -e 'display alert "'$1'" message "'$2'" buttons {"Abbrechen","Weiter"} default button "Weiter" as informational' >/dev/null 2>&1 local antwort
[ $? -eq 0 ] antwort=$(osascript -e 'display alert "'$1'" message "'$2'" buttons {"Abbrechen","Weiter"} default button "Weiter" as informational' 2>/dev/null)
echo "$antwort" | grep -q "Weiter"
} }
# --- Homebrew --- # --- Homebrew ---
@@ -19,32 +27,50 @@ for p in /opt/homebrew/bin/brew /usr/local/bin/brew; do
if [ -x "$p" ]; then BREW="$p"; break; fi if [ -x "$p" ]; then BREW="$p"; break; fi
done done
if [ -z "$BREW" ]; then if [ -z "$BREW" ]; then
if eingabe "Homebrew installieren?" "HMS MediaEngine benötigt Homebrew (der Paketmanager für macOS). Es wird jetzt installiert danach geht es automatisch weiter."; then if eingabe "Homebrew installieren?" "HMS MediaEngine benoetigt Homebrew (Paketmanager fuer macOS). Die Installation dauert einige Minuten danach geht es automatisch weiter. Das Passwort wird im naechsten Fenster von macOS abgefragt."; then
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo ""
echo ">> Installiere Homebrew (macOS fragt nach deinem Administrator-Passwort)..."
osascript -e 'do shell script "NONINTERACTIVE=1 /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"" with administrator privileges with prompt "Homebrew fuer HMS MediaEngine installieren"' >/dev/null 2>&1
if [ $? -ne 0 ]; then
osascript -e 'display alert "Homebrew-Installation fehlgeschlagen" message "Bitte das Fenster nochmal versuchen oder Meldung an den Support schicken." as critical' >/dev/null 2>&1
exit 1
fi
BREW=/opt/homebrew/bin/brew BREW=/opt/homebrew/bin/brew
[ -x "$BREW" ] || BREW=/usr/local/bin/brew
else else
osascript -e 'display alert "Abgebrochen" message "Ohne Homebrew kann HMS MediaEngine nicht installiert werden." as informational' >/dev/null 2>&1
exit 1 exit 1
fi fi
fi fi
echo ">> Homebrew gefunden: $BREW"
# --- Python 3.12 + tkinter --- # --- Python 3.12 + tkinter ---
"$BREW" list python-tk >/dev/null 2>&1 || { if ! "$BREW" list --versions python-tk >/dev/null 2>&1; then
if eingabe "Python-Komponenten installieren?" "Es wird python@3.12 mit tkinter installiert (für die grafische Oberfläche)."; then if eingabe "Python-Komponenten installieren?" "python@3.12 mit tkinter (grafische Oberflaeche) wird installiert."; then
echo ""
echo ">> Installiere Python + tkinter..."
"$BREW" install python@3.12 python-tk "$BREW" install python@3.12 python-tk
fi fi
} fi
# --- GStreamer --- # --- GStreamer ---
"$BREW" list gstreamer >/dev/null 2>&1 || { if ! "$BREW" list --versions gstreamer >/dev/null 2>&1; then
if eingabe "GStreamer installieren?" "Es werden GStreamer und alle Video-/Audio-Plugins installiert (ca. 510 Minuten)."; then if eingabe "GStreamer installieren?" "GStreamer mit allen Video-/Audio-Plugins wird installiert (ca. 5-10 Minuten, je nach Internet)."; then
echo ""
echo ">> Installiere GStreamer + Plugins..."
"$BREW" install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav pygobject "$BREW" install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav pygobject
fi fi
} fi
# --- GUI-Installer starten --- # --- GUI-Installer starten ---
PY=/opt/homebrew/bin/python3 PY=/opt/homebrew/bin/python3
if [ ! -x "$PY" ]; then PY=/usr/local/bin/python3; fi if [ ! -x "$PY" ]; then PY=/usr/local/bin/python3; fi
if [ ! -x "$PY" ]; then PY=python3; fi
echo "" echo ""
echo "Starte grafischen Installer (Fenster öffnet sich)..." echo ">> Starte grafischen Installer (Fenster oeffnet sich)..."
"$PY" installer_gui.py "$PY" installer_gui.py
echo ""
echo "Fertig. Ab jetzt genuegt: 'HMS MediaEngine.app' doppelklicken."