Zum Inhalt springen

OpenClaw macOS Releases mit Sparkle automatisieren

Apps für macOS zu veröffentlichen, kann sich oft wie ein Hindernislauf anfühlen. Zwischen Code Signing, Notarization und der Einrichtung eines zuverlässigen Update-Mechanismus geht viel Zeit verloren, die eigentlich in den Code fließen sollte. Besonders das Management von Auto-Updates stellt Entwickler oft vor Herausforderungen, wenn der Prozess nicht von Anfang an sauber definiert ist.

Wenn du deine App direkt an Nutzer verteilst, ohne den Mac App Store zu nutzen, brauchst du eine Lösung, die sicher ist und Gatekeeper-Warnungen vermeidet. Sparkle ist hier der Standard, erfordert aber ein präzises Setup bei den Zertifikaten und dem Appcast-Feed, damit die Updates reibungslos auf den Rechnern deiner Nutzer landen.

  • Ein installiertes Developer ID Application Zertifikat (Beispiel: Developer ID Application: <Developer Name> (<TEAMID>)).
  • Den Pfad zum Sparkle Private Key in der Umgebungsvariable SPARKLE_PRIVATE_KEY_FILE (Pfad zu deinem Sparkle ed25519 Private Key). Prüfe deine ~/.profile, falls dieser fehlt.
  • Notary Credentials (Keychain-Profil oder API Key) für xcrun notarytool. Erstelle das Profil openclaw-notary wie folgt:
    Terminal-Fenster
    echo "$APP_STORE_CONNECT_API_KEY_P8" | sed 's/\\n/\n/g' > /tmp/openclaw-notary.p8
    xcrun notarytool store-credentials "openclaw-notary" --key /tmp/openclaw-notary.p8 --key-id "$APP_STORE_CONNECT_KEY_ID" --issuer "$APP_STORE_CONNECT_ISSUER_ID"
  • Installierte pnpm Abhängigkeiten über pnpm install --config.node-linker=hoisted.

In 5 Minuten zum signierten Release:

  1. Build & Package: Starte das Build-Script vom Repo-Root aus. Setze die BUNDLE_ID und APP_VERSION, damit der Sparkle-Feed aktiviert wird.

    Terminal-Fenster
    BUNDLE_ID=ai.openclaw.mac \
    APP_VERSION=2026.3.7 \
    BUILD_CONFIG=release \
    SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
    scripts/package-mac-app.sh
  2. Zip-Archiv erstellen: Nutze ditto, um die Resource Forks für den Sparkle-Support zu erhalten.

    Terminal-Fenster
    ditto -c -k --sequesterRsrc --keepParent dist/OpenClaw.app dist/OpenClaw-2026.3.7.zip
  3. Notarization: Nutze das Distribution-Script, um die App zu bauen, zu notarisieren und zu stapeln.

    Terminal-Fenster
    NOTARIZE=1 NOTARYTOOL_PROFILE=openclaw-notary \
    BUNDLE_ID=ai.openclaw.mac \
    APP_VERSION=2026.3.7 \
    BUILD_CONFIG=release \
    SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
    scripts/package-mac-dist.sh
  4. Appcast Eintrag: Generiere den Feed-Eintrag mit formatierten Release Notes aus der CHANGELOG.md.

    Terminal-Fenster
    SPARKLE_PRIVATE_KEY_FILE=/path/to/ed25519-private-key scripts/make_appcast.sh dist/OpenClaw-2026.3.7.zip https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
  • Update wird nicht erkannt: Sparkle benötigt für APP_BUILD (entspricht CFBundleVersion) zwingend numerische und monotone Werte. Verwende keine Suffixe wie -beta. Wenn APP_BUILD weggelassen wird, generiert das Script automatisch einen Wert im Format YYYYMMDDNN.
  • Private Key fehlt: Falls Fehler beim Signieren des Appcasts auftreten, stelle sicher, dass SPARKLE_PRIVATE_KEY_FILE in deiner Shell-Umgebung korrekt gesetzt ist. Überprüfe dies mit echo $SPARKLE_PRIVATE_KEY_FILE.

Hast du Fragen zum Setup? Unser AI Setup Assistant hilft dir gerne weiter.

OpenClaw

OpenClaw Expert

Noch festgefahren?

Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.