#!/bin/bash # Erstellt ~/Applications/BFDS Offsite Backup.app, damit das Backup per # Spotlight ("bfds offsite backup") gestartet werden kann. Die App oeffnet # ein Terminal-Fenster und startet dort launch-backup.sh (Header, dann sudo-Start) # (Passwort-Abfragen und Ausgabe brauchen ein Terminal). # Kompatibel mit dem mit macOS ausgelieferten Bash 3.2. set -euo pipefail APP_NAME="${APP_NAME:-BFDS Offsite Backup}" APP_DIR="${APP_DIR:-$HOME/Applications}" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" BACKUP_SCRIPT="$SCRIPT_DIR/launch-backup.sh" APP_PATH="$APP_DIR/$APP_NAME.app" [ -x "$BACKUP_SCRIPT" ] || { echo "FEHLER: $BACKUP_SCRIPT nicht ausfuehrbar" >&2; exit 1; } mkdir -p "$APP_DIR" rm -rf "$APP_PATH" # Pfad fuer AppleScript-String und Shell quoten SHELL_CMD="$(printf '%q' "$BACKUP_SCRIPT")" SHELL_CMD="${SHELL_CMD//\\/\\\\}" SHELL_CMD="${SHELL_CMD//\"/\\\"}" /usr/bin/osacompile -o "$APP_PATH" < 0 then exit repeat delay 0.1 end repeat if (count of windows) > 0 then do script "$SHELL_CMD" in window 1 else do script "$SHELL_CMD" end if end if end tell EOF echo "Installiert: $APP_PATH" echo "Spotlight: \"bfds offsite backup\" eintippen (Indexierung kann kurz dauern)." # Standardmaessig heisst die App intern "applet" (so erscheint sie auch in den # Datenschutz-Listen). Ausfuehrbare Datei, Bundle-Name und -ID umbenennen und neu signieren. PLIST="$APP_PATH/Contents/Info.plist" EXEC_NAME="BFDS-Offsite-Backup" mv "$APP_PATH/Contents/MacOS/applet" "$APP_PATH/Contents/MacOS/$EXEC_NAME" PB=/usr/libexec/PlistBuddy "$PB" -c "Set :CFBundleExecutable $EXEC_NAME" "$PLIST" "$PB" -c "Set :CFBundleName $APP_NAME" "$PLIST" "$PB" -c "Add :CFBundleIdentifier string de.streber24.bfds-offsite-backup" "$PLIST" 2>/dev/null \ || "$PB" -c "Set :CFBundleIdentifier de.streber24.bfds-offsite-backup" "$PLIST" "$PB" -c "Add :CFBundleDisplayName string $APP_NAME" "$PLIST" 2>/dev/null \ || "$PB" -c "Set :CFBundleDisplayName $APP_NAME" "$PLIST" /usr/bin/codesign --force --deep --sign - "$APP_PATH" # Voller Festplattenzugriff laesst sich nicht per Script erteilen (macOS schuetzt # die Freigabe, nur MDM oder der Nutzer selbst kann sie setzen). Deshalb: Einstellungen # oeffnen und die App im Finder markieren, zum Hineinziehen in die Liste. echo echo "Bitte jetzt einmalig 'Voller Festplattenzugriff' fuer die App erteilen:" echo " App aus dem Finder-Fenster in die Liste ziehen (oder + klicken) und Schalter aktivieren." open "x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles" open -R "$APP_PATH"