From 24afa9163fbae1799de4076819671206e0f22647 Mon Sep 17 00:00:00 2001 From: thomas Date: Wed, 11 Feb 2026 16:31:13 +0100 Subject: [PATCH] Initial commit --- build_app.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ icon.png | Bin 0 -> 17818 bytes 2 files changed, 57 insertions(+) create mode 100644 build_app.sh create mode 100644 icon.png diff --git a/build_app.sh b/build_app.sh new file mode 100644 index 0000000..55c9da0 --- /dev/null +++ b/build_app.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# 1. Pfad-Fix für Go-Tools (damit 'fyne' gefunden wird) +export PATH=$PATH:$(go env GOPATH)/bin + +# 2. Variablen definieren +APP_NAME="Countdown Pro" +APP_ID="com.thomas.countdown.pro" +VERSION="1.0.5" +AUTHOR="Thomas Krampe" +COPYRIGHT="© 2026 $AUTHOR. Alle Rechte vorbehalten." +DMG_NAME="Countdown-Pro-Installer.dmg" + +echo "🚀 Phase 1: Aufräumen..." +rm -rf "$APP_NAME.app" +rm -f "$DMG_NAME" + +echo "🔨 Phase 2: Paketieren mit Fyne..." +# Wir nutzen -app-version und -name +fyne package -id "$APP_ID" -icon icon.png -app-version "$VERSION" -name "$APP_NAME" + +echo "📝 Phase 3: Metadaten und Copyright injizieren..." +PLIST="$APP_NAME.app/Contents/Info.plist" +if [ -f "$PLIST" ]; then + # Setzt Copyright und stellt sicher, dass der Anzeigename stimmt + defaults write "$(pwd)/$PLIST" NSHumanReadableCopyright "$COPYRIGHT" + defaults write "$(pwd)/$PLIST" CFBundleDisplayName "$APP_NAME" + defaults write "$(pwd)/$PLIST" CFBundleName "$APP_NAME" + plutil -convert xml1 "$PLIST" + echo "✅ Metadaten in Info.plist aktualisiert." +else + echo "❌ Fehler: Info.plist nicht gefunden!" + exit 1 +fi + +echo "📦 Phase 4: DMG Installer erstellen..." +# Prüfen, ob create-dmg installiert ist +if ! command -v create-dmg &> /dev/null; then + echo "⚠️ 'create-dmg' nicht gefunden. Installiere es mit: brew install create-dmg" + exit 1 +fi + +create-dmg \ + --volname "$APP_NAME Setup" \ + --window-pos 200 120 \ + --window-size 600 400 \ + --icon-size 100 \ + --icon "$APP_NAME.app" 150 190 \ + --hide-extension "$APP_NAME.app" \ + --app-drop-link 450 185 \ + "$DMG_NAME" \ + "$APP_NAME.app" + +echo "--------------------------------------------------" +echo "🎉 FERTIG! Deine App ist bereit zum Verschicken." +echo "📂 Datei: $DMG_NAME" +echo "--------------------------------------------------" \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0d38f7fc66db533b64c8faf954e08ebf6a927bb3 GIT binary patch literal 17818 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