From fd7a3c846a2d3a6b5ded0587be22c612194ae085 Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Tue, 13 Jan 2026 08:49:08 +0100 Subject: [PATCH] Add uploader downloads for Windows macOS Linux --- .../js/admin/i18n/locales/de/management.json | 7 +++ .../js/admin/i18n/locales/en/management.json | 7 +++ .../js/admin/mobile/EventPhotoboothPage.tsx | 35 +++++++++++++++ scripts/build-photobooth-uploader.sh | 43 ++++++++++++++----- 4 files changed, 81 insertions(+), 11 deletions(-) diff --git a/resources/js/admin/i18n/locales/de/management.json b/resources/js/admin/i18n/locales/de/management.json index 758e79a..f58126c 100644 --- a/resources/js/admin/i18n/locales/de/management.json +++ b/resources/js/admin/i18n/locales/de/management.json @@ -1205,6 +1205,13 @@ "uploader": { "hint": "POST mit Mediendatei oder base64-Feld \"media\"; die App nutzt diese Zugangsdaten." }, + "uploaderDownload": { + "title": "Fotospiel Uploader App", + "description": "Die Fotospiel Uploader App wird benötigt, damit Uploads stabil laufen, die Zugangsdaten geschützt bleiben und keine Dateien verloren gehen.", + "actionWindows": "Uploader herunterladen (Windows)", + "actionMac": "Uploader herunterladen (macOS)", + "actionLinux": "Uploader herunterladen (Linux)" + }, "actions": { "enable": "Photobooth aktivieren", "disable": "Deaktivieren", diff --git a/resources/js/admin/i18n/locales/en/management.json b/resources/js/admin/i18n/locales/en/management.json index c1edce6..dcd18b5 100644 --- a/resources/js/admin/i18n/locales/en/management.json +++ b/resources/js/admin/i18n/locales/en/management.json @@ -918,6 +918,13 @@ "uploader": { "hint": "POST with media file or base64 \"media\" field; app uses these credentials." }, + "uploaderDownload": { + "title": "Fotospiel Uploader App", + "description": "The Fotospiel Uploader App is required so uploads stay stable, credentials remain protected, and no files are lost.", + "actionWindows": "Download uploader (Windows)", + "actionMac": "Download uploader (macOS)", + "actionLinux": "Download uploader (Linux)" + }, "actions": { "enable": "Activate photobooth", "disable": "Disable", diff --git a/resources/js/admin/mobile/EventPhotoboothPage.tsx b/resources/js/admin/mobile/EventPhotoboothPage.tsx index 5283db5..8987ee5 100644 --- a/resources/js/admin/mobile/EventPhotoboothPage.tsx +++ b/resources/js/admin/mobile/EventPhotoboothPage.tsx @@ -250,6 +250,41 @@ export default function MobileEventPhotoboothPage() { + + + {t('photobooth.uploaderDownload.title', 'Fotospiel Uploader App')} + + + {t( + 'photobooth.uploaderDownload.description', + 'Die Fotospiel Uploader App ist verpflichtend, damit Uploads stabil laufen, die Zugangsdaten geschützt bleiben und keine Dateien verloren gehen.' + )} + + { + const url = new URL('/downloads/PhotoboothUploader-win-x64.exe', window.location.origin).toString(); + window.open(url, '_blank', 'noopener,noreferrer'); + }} + /> + { + const url = new URL('/downloads/PhotoboothUploader-macos-x64', window.location.origin).toString(); + window.open(url, '_blank', 'noopener,noreferrer'); + }} + /> + { + const url = new URL('/downloads/PhotoboothUploader-linux-x64', window.location.origin).toString(); + window.open(url, '_blank', 'noopener,noreferrer'); + }} + /> + + diff --git a/scripts/build-photobooth-uploader.sh b/scripts/build-photobooth-uploader.sh index af595dc..e413e7b 100644 --- a/scripts/build-photobooth-uploader.sh +++ b/scripts/build-photobooth-uploader.sh @@ -4,7 +4,9 @@ set -euo pipefail WORKDIR=${WORKDIR:-/var/www/html} SRC_DIR="${WORKDIR}/clients/photobooth-uploader/PhotoboothUploader" OUT_DIR="${WORKDIR}/public/downloads" -OUT_FILE="${OUT_DIR}/PhotoboothUploader.exe" +WIN_FILE="${OUT_DIR}/PhotoboothUploader-win-x64.exe" +MAC_FILE="${OUT_DIR}/PhotoboothUploader-macos-x64" +LINUX_FILE="${OUT_DIR}/PhotoboothUploader-linux-x64" STAMP_FILE="${OUT_DIR}/photobooth-uploader.hash" if [[ ! -d "$SRC_DIR" ]]; then @@ -27,7 +29,7 @@ compute_hash() { HASH=$(compute_hash) -if [[ -f "$OUT_FILE" && -f "$STAMP_FILE" ]]; then +if [[ -f "$WIN_FILE" && -f "$MAC_FILE" && -f "$LINUX_FILE" && -f "$STAMP_FILE" ]]; then CURRENT_HASH=$(cat "$STAMP_FILE" || true) if [[ "$CURRENT_HASH" == "$HASH" ]]; then echo "[photobooth-uploader] Up to date, skipping publish." @@ -35,14 +37,33 @@ if [[ -f "$OUT_FILE" && -f "$STAMP_FILE" ]]; then fi fi -echo "[photobooth-uploader] Publishing uploader exe..." -dotnet publish "${SRC_DIR}/PhotoboothUploader.csproj" \ - -c Release \ - -r win-x64 \ - --self-contained true \ - /p:PublishSingleFile=true \ - /p:IncludeNativeLibrariesForSelfExtract=true \ - -o "$OUT_DIR" +publish_target() { + local rid="$1" + local output_file="$2" + local temp_dir + temp_dir=$(mktemp -d) + + dotnet publish "${SRC_DIR}/PhotoboothUploader.csproj" \ + -c Release \ + -r "$rid" \ + --self-contained true \ + /p:PublishSingleFile=true \ + /p:IncludeNativeLibrariesForSelfExtract=true \ + -o "$temp_dir" + + if [[ "$rid" == "win-x64" ]]; then + mv -f "$temp_dir/PhotoboothUploader.exe" "$output_file" + else + mv -f "$temp_dir/PhotoboothUploader" "$output_file" + fi + + rm -rf "$temp_dir" +} + +echo "[photobooth-uploader] Publishing uploader binaries..." +publish_target "win-x64" "$WIN_FILE" +publish_target "osx-x64" "$MAC_FILE" +publish_target "linux-x64" "$LINUX_FILE" echo "$HASH" > "$STAMP_FILE" -echo "[photobooth-uploader] Published to ${OUT_FILE}" +echo "[photobooth-uploader] Published to ${OUT_DIR}"