diff --git a/Makefile b/Makefile index 3e065ad..1ac985b 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ test-mysql-up test-mysql-down test-mysql test-mysql-quick \ frontend-build frontend-dev frontend-test frontend-test-watch frontend-test-coverage frontend-test-e2e frontend-lint frontend-clean \ desktop-build desktop-build-mac desktop-build-win desktop-build-linux \ - desktop-dev desktop-test desktop-package-mac desktop-package-win desktop-package-linux desktop-clean \ + desktop-dev desktop-test desktop-clean \ desktop-prepare-frontend desktop-prepare-embedfs # ============================================ @@ -172,6 +172,50 @@ desktop-build-mac: desktop-prepare-frontend desktop-prepare-embedfs @echo "🍎 Building macOS..." cd backend && CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o ../build/nex-mac-arm64 ./cmd/desktop cd backend && CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 go build -o ../build/nex-mac-amd64 ./cmd/desktop + @echo "📦 Packaging macOS .app..." + mkdir -p build/Nex.app/Contents/MacOS build/Nex.app/Contents/Resources + cp build/nex-mac-arm64 build/Nex.app/Contents/MacOS/nex + @if [ -f assets/AppIcon.icns ]; then \ + cp assets/AppIcon.icns build/Nex.app/Contents/Resources/; \ + else \ + echo "⚠️ 未找到 assets/AppIcon.icns"; \ + fi + @{ \ + printf '%s\n' '' \ + '' \ + '' \ + '' \ + ' CFBundleDevelopmentRegion' \ + ' zh_CN' \ + ' CFBundleExecutable' \ + ' nex' \ + ' CFBundleIconFile' \ + ' AppIcon' \ + ' CFBundleIdentifier' \ + ' io.nex.gateway' \ + ' CFBundleInfoDictionaryVersion' \ + ' 6.0' \ + ' CFBundleName' \ + ' Nex Gateway' \ + ' CFBundleDisplayName' \ + ' Nex Gateway' \ + ' CFBundlePackageType' \ + ' APPL' \ + ' CFBundleShortVersionString' \ + ' 1.0.0' \ + ' CFBundleVersion' \ + ' 1.0.0' \ + ' LSMinimumSystemVersion' \ + ' 10.13' \ + ' LSUIElement' \ + ' ' \ + ' NSHighResolutionCapable' \ + ' ' \ + '' \ + ''; \ + } > build/Nex.app/Contents/Info.plist + chmod +x build/Nex.app/Contents/MacOS/nex + @echo "✅ macOS app packaged: build/Nex.app" desktop-build-win: desktop-prepare-frontend desktop-prepare-embedfs @echo "🪟 Building Windows..." @@ -188,15 +232,6 @@ desktop-dev: desktop-prepare-frontend desktop-prepare-embedfs desktop-test: cd backend && go test ./cmd/desktop/... -v -desktop-package-mac: - ./scripts/build/package-macos.sh - -desktop-package-win: - @echo "⚠️ Windows packaging not implemented yet" - -desktop-package-linux: - @echo "⚠️ Linux packaging not implemented yet" - desktop-clean: rm -rf build/ embedfs/assets embedfs/frontend-dist diff --git a/README.md b/README.md index 61a7870..01f5fcb 100644 --- a/README.md +++ b/README.md @@ -39,10 +39,6 @@ nex/ │ ├── AppIcon.icns # macOS 应用图标 │ └── icon.ico # Windows 应用图标 │ -├── scripts/ # 构建脚本 -│ └── build/ -│ └── package-macos.sh # macOS .app 打包脚本 -│ └── README.md # 本文件 ``` @@ -105,9 +101,8 @@ JSON: {"level":"info","logger":"handler.proxy","msg":"处理请求","method": **构建桌面应用**: ```bash -# macOS (arm64 + amd64) +# macOS (arm64 + amd64,并打包为 .app) make desktop-build-mac -make desktop-package-mac # 打包为 .app # Windows make desktop-build-win diff --git a/scripts/build/package-macos.sh b/scripts/build/package-macos.sh deleted file mode 100755 index 00a3638..0000000 --- a/scripts/build/package-macos.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash - -VERSION="1.0.0" -APP_NAME="Nex" -BUNDLE_ID="io.nex.gateway" -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" -BUILD_DIR="${PROJECT_ROOT}/build" -ASSETS_DIR="${PROJECT_ROOT}/assets" - -echo "打包 macOS .app..." - -mkdir -p "${BUILD_DIR}/${APP_NAME}.app/Contents/MacOS" -mkdir -p "${BUILD_DIR}/${APP_NAME}.app/Contents/Resources" - -if [ -f "${BUILD_DIR}/nex-mac-arm64" ]; then - cp "${BUILD_DIR}/nex-mac-arm64" "${BUILD_DIR}/${APP_NAME}.app/Contents/MacOS/nex" -elif [ -f "${BUILD_DIR}/nex-mac-amd64" ]; then - cp "${BUILD_DIR}/nex-mac-amd64" "${BUILD_DIR}/${APP_NAME}.app/Contents/MacOS/nex" -else - echo "错误: 未找到 macOS 二进制文件,请先运行 make desktop-build-mac" - exit 1 -fi - -if [ -f "${ASSETS_DIR}/AppIcon.icns" ]; then - cp "${ASSETS_DIR}/AppIcon.icns" "${BUILD_DIR}/${APP_NAME}.app/Contents/Resources/" -else - echo "警告: 未找到 AppIcon.icns" -fi - -cat > "${BUILD_DIR}/${APP_NAME}.app/Contents/Info.plist" << EOF - - - - - CFBundleDevelopmentRegion - zh_CN - CFBundleExecutable - nex - CFBundleIconFile - AppIcon - CFBundleIdentifier - ${BUNDLE_ID} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${APP_NAME} Gateway - CFBundleDisplayName - ${APP_NAME} Gateway - CFBundlePackageType - APPL - CFBundleShortVersionString - ${VERSION} - CFBundleVersion - ${VERSION} - LSMinimumSystemVersion - 10.13 - LSUIElement - - NSHighResolutionCapable - - - -EOF - -chmod +x "${BUILD_DIR}/${APP_NAME}.app/Contents/MacOS/nex" - -echo "打包完成: ${BUILD_DIR}/${APP_NAME}.app"