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:
+39
-13
@@ -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. 5–10 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."
|
||||||
|
|||||||
Reference in New Issue
Block a user