From bc1da530de72684e4df24931e0e031db87b8b8c0 Mon Sep 17 00:00:00 2001 From: HMS MediaEngine Agent Date: Fri, 11 Sep 2026 23:16:51 +0200 Subject: [PATCH] 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 --- HMS-Mac-Install.command | 52 ++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/HMS-Mac-Install.command b/HMS-Mac-Install.command index 42855c8..7c505f3 100755 --- a/HMS-Mac-Install.command +++ b/HMS-Mac-Install.command @@ -2,15 +2,23 @@ # HMS MediaEngine – macOS-Installation per Doppelklick (Finder) # Ablauf: brew pruefen/installieren -> python3+tk pruefen -> # 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")" -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() { - osascript -e 'display alert "'$1'" message "'$2'" buttons {"Abbrechen","Weiter"} default button "Weiter" as informational' >/dev/null 2>&1 - [ $? -eq 0 ] + local antwort + 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 --- @@ -19,32 +27,50 @@ for p in /opt/homebrew/bin/brew /usr/local/bin/brew; do if [ -x "$p" ]; then BREW="$p"; break; fi done 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 - NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + 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 + 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 + [ -x "$BREW" ] || BREW=/usr/local/bin/brew else + osascript -e 'display alert "Abgebrochen" message "Ohne Homebrew kann HMS MediaEngine nicht installiert werden." as informational' >/dev/null 2>&1 exit 1 fi fi +echo ">> Homebrew gefunden: $BREW" + # --- Python 3.12 + tkinter --- -"$BREW" list python-tk >/dev/null 2>&1 || { - if eingabe "Python-Komponenten installieren?" "Es wird python@3.12 mit tkinter installiert (für die grafische Oberfläche)."; then +if ! "$BREW" list --versions python-tk >/dev/null 2>&1; 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 fi -} +fi # --- GStreamer --- -"$BREW" list gstreamer >/dev/null 2>&1 || { - if eingabe "GStreamer installieren?" "Es werden GStreamer und alle Video-/Audio-Plugins installiert (ca. 5–10 Minuten)."; then +if ! "$BREW" list --versions gstreamer >/dev/null 2>&1; 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 fi -} +fi # --- GUI-Installer starten --- PY=/opt/homebrew/bin/python3 if [ ! -x "$PY" ]; then PY=/usr/local/bin/python3; fi +if [ ! -x "$PY" ]; then PY=python3; fi echo "" -echo "Starte grafischen Installer (Fenster öffnet sich)..." +echo ">> Starte grafischen Installer (Fenster oeffnet sich)..." "$PY" installer_gui.py + +echo "" +echo "Fertig. Ab jetzt genuegt: 'HMS MediaEngine.app' doppelklicken."