deploy-macos.sh installiert nach ~/Applications
Bisher hat das Skript nur das Dev-Bundle aus Launch Services ausgetragen und den DMG-Pfad ausgegeben; installiert wurde von Hand. Linux und Windows installieren in ihren Deploy-Skripten, macOS war der Ausreisser. Jetzt: alte Kopie austragen und loeschen (ditto merget sonst in ein bestehendes Bundle hinein), neues Bundle per ditto nach ~/Applications, lsregister -f. Guards vorweg gegen fehlendes Bundle und laufende Instanz -- eine laufende App haelt Dateien offen und ergaebe ein halb ueberschriebenes Bundle.
This commit is contained in:
+27
-4
@@ -1,15 +1,37 @@
|
||||
#!/usr/bin/env bash
|
||||
# macOS-Deploy nach build.sh: Dev-Bundle aus Launch Services austragen und in
|
||||
# ein .noindex-Verzeichnis schieben — Spotlight indiziert .noindex nicht, damit
|
||||
# erscheint im Starter/Spotlight nur die installierte Kopie. Installiert wird
|
||||
# über das DMG (Pfad am Ende).
|
||||
# macOS-Deploy nach build.sh: das frisch gebaute Bundle nach ~/Applications
|
||||
# installieren. Das Dev-Bundle wandert danach aus Launch Services heraus in ein
|
||||
# .noindex-Verzeichnis — Spotlight indiziert .noindex nicht, damit erscheint im
|
||||
# Starter/Spotlight nur die installierte Kopie.
|
||||
set -euo pipefail
|
||||
|
||||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
BUNDLE="$DIR/src-tauri/target/release/bundle/macos"
|
||||
NOINDEX="$DIR/src-tauri/target/release/bundle/macos.noindex"
|
||||
TARGET="$HOME/Applications"
|
||||
LSREGISTER=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
|
||||
|
||||
if [[ ! -d "$BUNDLE/ai-control.app" ]]; then
|
||||
echo "kein frisches Bundle unter $BUNDLE — erst ./build.sh laufen lassen" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Eine laufende Instanz hält Dateien im Bundle offen; das Ersetzen ergäbe eine
|
||||
# halb überschriebene App.
|
||||
if pgrep -qx ai-control; then
|
||||
echo "ai-control läuft — erst beenden, dann erneut deployen" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Installieren: alte Kopie ganz weg (ditto führt sonst Reste alter Builds
|
||||
# fort), dann das neue Bundle hin und in Launch Services eintragen.
|
||||
mkdir -p "$TARGET"
|
||||
"$LSREGISTER" -u "$TARGET/ai-control.app" || true
|
||||
rm -rf "$TARGET/ai-control.app"
|
||||
ditto "$BUNDLE/ai-control.app" "$TARGET/ai-control.app"
|
||||
"$LSREGISTER" -f "$TARGET/ai-control.app"
|
||||
|
||||
# lsregister -u meldet -10814, wenn das Bundle nicht registriert ist —
|
||||
# erwartetes Ergebnis, kein Fehler.
|
||||
"$LSREGISTER" -u "$BUNDLE/ai-control.app" || true
|
||||
@@ -18,4 +40,5 @@ mkdir -p "$NOINDEX"
|
||||
mv "$BUNDLE/ai-control.app" "$NOINDEX/"
|
||||
"$LSREGISTER" -u "$NOINDEX/ai-control.app" || true
|
||||
|
||||
echo "installiert: $TARGET/ai-control.app"
|
||||
echo "DMG: $(ls "$DIR"/src-tauri/target/release/bundle/dmg/*.dmg)"
|
||||
|
||||
Reference in New Issue
Block a user