e15e128fd3
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.
45 lines
1.7 KiB
Bash
Executable File
45 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 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
|
|
rm -rf "$NOINDEX/ai-control.app"
|
|
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)"
|