diff --git a/build.sh b/build.sh index 4d4f876..64d38dc 100755 --- a/build.sh +++ b/build.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Gemeinsamer Release-Build für macOS/Linux (Windows: unter Git-Bash läuft +# auch dieses Script). Baut nur — ausrollen macht das jeweilige +# deploy--Script. set -euo pipefail DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -8,22 +11,20 @@ export RUSTUP_HOME="$HOME/tools/.rustup" export PATH="$CARGO_HOME/bin:$PATH" cd "$DIR" -# CI=true: DMG ohne Finder-AppleScript (Fenster-Layout) bauen — das Script -# wäre aus Nicht-GUI-Shells TCC-blockiert. -CI=true npm run tauri build -- --bundles app,dmg "$@" - -# Dev-Bundle in ein .noindex-Verzeichnis schieben und aus Launch Services -# austragen — Spotlight indiziert .noindex-Ordner nicht, damit erscheint im -# Starter/Spotlight nur die installierte Kopie unter ~/Applications. -BUNDLE="$DIR/src-tauri/target/release/bundle/macos" -NOINDEX="$DIR/src-tauri/target/release/bundle/macos.noindex" -LSREGISTER=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -# 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 "DMG: $(ls "$DIR"/src-tauri/target/release/bundle/dmg/*.dmg)" +case "$(uname -s)" in + Darwin) + # CI=true: DMG ohne Finder-AppleScript (Fenster-Layout) bauen — das Script + # wäre aus Nicht-GUI-Shells TCC-blockiert. + CI=true npm run tauri build -- --bundles app,dmg "$@" + ;; + Linux) + npm run tauri build -- --bundles deb,rpm "$@" + ;; + MINGW* | MSYS*) + npm run tauri build -- --bundles nsis "$@" + ;; + *) + echo "unbekanntes OS: $(uname -s)" >&2 + exit 1 + ;; +esac diff --git a/deploy-linux.sh b/deploy-linux.sh new file mode 100755 index 0000000..da3aad6 --- /dev/null +++ b/deploy-linux.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Linux-Deploy nach build.sh: jüngstes Paket-Bundle installieren. +# dnf-Systeme: rpm -Uvh --force (installiert auch dieselbe Version neu), +# apt-Systeme: dpkg -i. Braucht sudo. +set -euo pipefail + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BUNDLE="$DIR/src-tauri/target/release/bundle" + +if command -v dnf >/dev/null; then + PKG="$(ls -t "$BUNDLE"/rpm/ai-control-*.rpm | head -1)" + sudo rpm -Uvh --force "$PKG" +elif command -v dpkg >/dev/null; then + PKG="$(ls -t "$BUNDLE"/deb/ai-control_*.deb | head -1)" + sudo dpkg -i "$PKG" +else + echo "weder dnf noch dpkg gefunden" >&2 + exit 1 +fi + +echo "installiert: $PKG" +echo "Haupt-App übers Tray beenden und neu starten (Migration läuft beim Start)." diff --git a/deploy-macos.sh b/deploy-macos.sh new file mode 100755 index 0000000..d6e974b --- /dev/null +++ b/deploy-macos.sh @@ -0,0 +1,21 @@ +#!/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). +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" +LSREGISTER=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister +# 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 "DMG: $(ls "$DIR"/src-tauri/target/release/bundle/dmg/*.dmg)" diff --git a/deploy-windows.ps1 b/deploy-windows.ps1 new file mode 100644 index 0000000..1c2234b --- /dev/null +++ b/deploy-windows.ps1 @@ -0,0 +1,13 @@ +# Windows-Deploy nach dem Build (--bundles nsis): jüngsten Installer starten. +$ErrorActionPreference = "Stop" + +$dir = Split-Path -Parent $MyInvocation.MyCommand.Path +$installer = Get-ChildItem "$dir\src-tauri\target\release\bundle\nsis\ai-control_*-setup.exe" | + Sort-Object LastWriteTime -Descending | Select-Object -First 1 + +if (-not $installer) { + Write-Error "kein Installer gefunden — erst build.sh (Git-Bash) mit nsis-Bundle laufen lassen" +} + +Start-Process -Wait $installer.FullName +Write-Output "installiert: $($installer.Name)"