#!/bin/bash # scripts/create_app_bundle.sh # 创建System Extension .app Bundle set -e echo "=== 创建System Extension .app Bundle ===" # 配置 BUNDLE_ID="com.momentry.markbase.fskit" TEAM_ID="K3TDMD9Y6B" APP_NAME="MarkBaseFSKit.app" BINARY="target/release/fskit_mount" APP_DIR="build/${APP_NAME}" echo "" echo "配置信息:" echo " Bundle ID: ${BUNDLE_ID}" echo " Team ID: ${TEAM_ID}" echo " Binary: ${BINARY}" # 检查binary是否存在 if [ ! -f "${BINARY}" ]; then echo "❌ Binary不存在:${BINARY}" echo " 需要先构建Rust binary" echo " 运行:cargo build --release --bin fskit_mount" exit 1 fi echo "" echo "步骤1: 创建.app bundle结构..." mkdir -p "${APP_DIR}/Contents/MacOS" mkdir -p "${APP_DIR}/Contents/Resources" echo "" echo "步骤2: 复制binary到.app..." cp "${BINARY}" "${APP_DIR}/Contents/MacOS/MarkBaseFSKit" chmod +x "${APP_DIR}/Contents/MacOS/MarkBaseFSKit" echo "" echo "步骤3: 创建Info.plist..." cat > "${APP_DIR}/Contents/Info.plist" << 'PLIST' CFBundleIdentifier com.momentry.markbase.fskit CFBundleName MarkBaseFSKit CFBundleVersion 1.0 CFBundleShortVersionString 1.0 CFBundleExecutable MarkBaseFSKit CFBundlePackageType APPL LSMinimumSystemVersion 10.15 NSHighResolutionCapable NSSystemExtension NSSystemExtensionUsageDescription MarkBaseFSKit provides virtual filesystem mounting functionality. PLIST echo "" echo "步骤4: 复制entitlements.plist..." cp entitlements.plist "${APP_DIR}/Contents/entitlements.plist" echo "" echo "步骤5: 验证.app bundle结构..." ls -la "${APP_DIR}/Contents/" echo "" echo "✅ .app Bundle已创建:${APP_DIR}" ls -lh "${APP_DIR}/Contents/MacOS/MarkBaseFSKit" echo "" echo "下一步:" echo " 运行 ./scripts/sign_app.sh 进行签名"