LighthouseApp/build_macos_simple.sh
speakeloudest 75d4c48e41
Some checks failed
Build Windows / build (push) Has been cancelled
feat: 源码提交
2025-10-19 23:30:54 -07:00

109 lines
3.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 <<EOF
tell application "Finder"
tell disk "Kaer VPN"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set the bounds of container window to {400, 100, 900, 450}
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to not arranged
set icon size of theViewOptions to 128
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
set position of item "BearVPN.app" of container window to {150, 200}
set position of item "Applications" of container window to {350, 200}
close
open
update without registering applications
delay 2
end tell
end tell
EOF
# 卸载 DMG
echo -e "${YELLOW}📤 卸载 DMG...${NC}"
hdiutil detach "$MOUNT_POINT" -force
# 转换为只读 DMG
hdiutil convert "$TEMP_DMG" -format UDZO -imagekey zlib-level=9 -o "$DMG_PATH"
# 清理临时文件
rm "$TEMP_DMG"
echo -e "${GREEN}✅ DMG 创建成功: $DMG_PATH${NC}"
# 显示 DMG 信息
echo -e "${YELLOW}📊 DMG 信息:${NC}"
hdiutil imageinfo "$DMG_PATH"
echo -e "${GREEN}🎉 DMG 构建完成!${NC}"
echo -e "${GREEN}📁 文件位置: $DMG_PATH${NC}"
echo -e "${GREEN}📏 文件大小: $(du -h "$DMG_PATH" | cut -f1)${NC}"
echo -e "${YELLOW}⚠️ 注意:此 DMG 未签名,用户安装时需要在安全隐私设置中手动允许${NC}"
echo -e "${YELLOW}💡 要避免手动允许,请使用 build_macos_dmg.sh 脚本进行签名和公证${NC}"