Build und Deploy getrennt: gemeinsames build.sh, Deploy-Skripte pro OS
build.sh baut nur noch (OS-Weiche für die Bundle-Liste: macOS app,dmg, Linux deb,rpm, Git-Bash nsis); die macOS-Nachbereitung (lsregister, .noindex) zieht nach deploy-macos.sh um. deploy-linux.sh installiert das jüngste Bundle (dnf: rpm -Uvh --force, apt: dpkg -i), deploy-windows.ps1 startet den NSIS-Installer.
This commit is contained in:
@@ -1,4 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/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-<os>-Script.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
@@ -8,22 +11,20 @@ export RUSTUP_HOME="$HOME/tools/.rustup"
|
|||||||
export PATH="$CARGO_HOME/bin:$PATH"
|
export PATH="$CARGO_HOME/bin:$PATH"
|
||||||
|
|
||||||
cd "$DIR"
|
cd "$DIR"
|
||||||
# CI=true: DMG ohne Finder-AppleScript (Fenster-Layout) bauen — das Script
|
case "$(uname -s)" in
|
||||||
# wäre aus Nicht-GUI-Shells TCC-blockiert.
|
Darwin)
|
||||||
CI=true npm run tauri build -- --bundles app,dmg "$@"
|
# CI=true: DMG ohne Finder-AppleScript (Fenster-Layout) bauen — das Script
|
||||||
|
# wäre aus Nicht-GUI-Shells TCC-blockiert.
|
||||||
# Dev-Bundle in ein .noindex-Verzeichnis schieben und aus Launch Services
|
CI=true npm run tauri build -- --bundles app,dmg "$@"
|
||||||
# austragen — Spotlight indiziert .noindex-Ordner nicht, damit erscheint im
|
;;
|
||||||
# Starter/Spotlight nur die installierte Kopie unter ~/Applications.
|
Linux)
|
||||||
BUNDLE="$DIR/src-tauri/target/release/bundle/macos"
|
npm run tauri build -- --bundles deb,rpm "$@"
|
||||||
NOINDEX="$DIR/src-tauri/target/release/bundle/macos.noindex"
|
;;
|
||||||
LSREGISTER=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
|
MINGW* | MSYS*)
|
||||||
# lsregister -u meldet -10814, wenn das Bundle nicht registriert ist —
|
npm run tauri build -- --bundles nsis "$@"
|
||||||
# erwartetes Ergebnis, kein Fehler.
|
;;
|
||||||
"$LSREGISTER" -u "$BUNDLE/ai-control.app" || true
|
*)
|
||||||
rm -rf "$NOINDEX/ai-control.app"
|
echo "unbekanntes OS: $(uname -s)" >&2
|
||||||
mkdir -p "$NOINDEX"
|
exit 1
|
||||||
mv "$BUNDLE/ai-control.app" "$NOINDEX/"
|
;;
|
||||||
"$LSREGISTER" -u "$NOINDEX/ai-control.app" || true
|
esac
|
||||||
|
|
||||||
echo "DMG: $(ls "$DIR"/src-tauri/target/release/bundle/dmg/*.dmg)"
|
|
||||||
|
|||||||
Executable
+22
@@ -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)."
|
||||||
Executable
+21
@@ -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)"
|
||||||
@@ -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)"
|
||||||
Reference in New Issue
Block a user