#!/bin/bash # 简化的 macOS DMG 构建脚本(无签名版本) # 注意:此版本需要用户在安装时手动允许 set -e # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}🚀 开始构建 macOS DMG(简化版本)...${NC}" # 清理之前的构建 echo -e "${YELLOW}🧹 清理之前的构建...${NC}" flutter clean # 构建 Flutter macOS 应用 echo -e "${YELLOW}🔨 构建 Flutter macOS 应用...${NC}" flutter build macos --release # 检查应用是否构建成功 APP_PATH="build/macos/Build/Products/Release/BearVPN.app" if [ ! -d "$APP_PATH" ]; then echo -e "${RED}❌ 应用构建失败: $APP_PATH 不存在${NC}" exit 1 fi echo -e "${GREEN}✅ 应用构建成功: $APP_PATH${NC}" # 创建 DMG echo -e "${YELLOW}📦 创建 DMG 安装包...${NC}" DMG_PATH="build/macos/Build/Products/Release/BearVPN.dmg" TEMP_DMG="build/macos/Build/Products/Release/temp.dmg" # 创建临时 DMG hdiutil create -srcfolder "$APP_PATH" -volname "Kaer VPN" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size 200m "$TEMP_DMG" # 挂载临时 DMG echo -e "${YELLOW}📂 挂载临时 DMG...${NC}" MOUNT_OUTPUT=$(hdiutil attach -readwrite -noverify -noautoopen "$TEMP_DMG") MOUNT_POINT=$(echo "$MOUNT_OUTPUT" | grep "/Volumes" | awk '{print $3}') if [ -z "$MOUNT_POINT" ]; then echo -e "${RED}❌ 无法挂载 DMG${NC}" exit 1 fi echo -e "${GREEN}✅ DMG 已挂载到: $MOUNT_POINT${NC}" # 等待挂载完成 sleep 3 # 设置 DMG 属性 echo -e "${YELLOW}🎨 设置 DMG 属性...${NC}" # 创建应用程序链接 ln -s /Applications "$MOUNT_POINT/Applications" # 设置窗口属性 echo -e "${YELLOW}🖼️ 设置窗口属性...${NC}" osascript <