From e15e128fd3d4ecbd8fa5510de274155e0d5e3790 Mon Sep 17 00:00:00 2001 From: marcusH Date: Mon, 20 Jul 2026 22:08:35 +0200 Subject: [PATCH] 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. --- deploy-macos.sh | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/deploy-macos.sh b/deploy-macos.sh index d6e974b..a73659e 100755 --- a/deploy-macos.sh +++ b/deploy-macos.sh @@ -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)"