# macOS DMG 安装包构建指南 本文档介绍如何为 Wormhole SOCKS5 Client 构建 macOS DMG 安装包。 ## 🔧 环境要求 ### 系统要求 - **macOS 10.13+** (High Sierra 或更高版本) - **Xcode Command Line Tools** 或完整的 Xcode - **Go 1.19+** ### 可选工具 - **Python 3** + **Pillow (PIL)** - 用于生成自定义应用图标 - **Git** - 用于版本控制 ## 🚀 快速开始 ### 一键构建 ```bash # 构建完整的 DMG 安装包 make dmg # 或者使用完整命令 make dmg-macos ``` ### 分步构建 ```bash # 1. 构建 macOS 应用程序包 ./scripts/build-macos.sh # 2. 创建 DMG 安装包 ./scripts/create-dmg.sh # 3. 验证和测试 open build/Wormhole-Client-v1.0.0.dmg ``` ## 📁 构建产物 构建成功后,将在 `build/` 目录下生成以下文件: ``` build/ ├── Wormhole Client.app/ # macOS 应用程序包 │ ├── Contents/ │ │ ├── Info.plist # 应用信息 │ │ ├── MacOS/ │ │ │ ├── wormhole-client # 二进制文件 │ │ │ └── Wormhole Client # 启动脚本 │ │ └── Resources/ │ │ ├── configs/ # 配置文件 │ │ └── app.icns # 应用图标 │ └── ... └── Wormhole-Client-v1.0.0.dmg # 最终安装包 ``` ## 🎨 自定义图标 ### 使用自定义图标 1. 准备一个 1024x1024 的 PNG 图片 2. 将其保存为 `assets/icons/icon.png` 3. 重新构建即可使用自定义图标 ### 自动生成图标 如果没有自定义图标,构建脚本会自动: 1. 尝试使用 Python PIL 生成简单图标 2. 如果失败,使用系统默认应用图标 ## 📦 DMG 特性 ### 安装体验 - **拖拽安装**: 用户只需将 app 拖到 Applications 文件夹 - **自动布局**: 优化的窗口布局和图标位置 - **说明文档**: 包含安装和使用说明 ### DMG 内容 - `Wormhole Client.app` - 主应用程序 - `Applications` - Applications 文件夹快捷方式 - `README.txt` - 安装和使用说明 ## 🔍 构建脚本详解 ### build-macos.sh - 编译 Go 二进制文件 (amd64 架构) - 创建标准的 macOS 应用程序包结构 - 复制配置文件和资源 - 生成或复制应用图标 - 创建 Info.plist 文件 - 设置启动脚本 ### create-dmg.sh - 创建临时 DMG 工作目录 - 复制应用程序和创建符号链接 - 生成说明文档 - 使用 AppleScript 美化 DMG 外观 - 创建压缩的只读 DMG - 验证 DMG 完整性 ### build-dmg.sh - 一键执行完整构建流程 - 环境检查和工具验证 - 构建结果汇总和验证 ## 🛠️ 故障排除 ### 常见问题 #### 1. hdiutil 权限错误 ```bash # 解决方案:使用 sudo 或给予磁盘访问权限 sudo ./scripts/create-dmg.sh ``` #### 2. AppleScript 执行失败 ```bash # 检查系统完整性保护 (SIP) csrutil status # 在系统偏好设置中允许自动化权限 # 系统偏好设置 > 安全性与隐私 > 隐私 > 自动化 ``` #### 3. Go 编译失败 ```bash # 检查 Go 版本 go version # 确保依赖已下载 go mod download go mod tidy ``` ### 调试模式 ```bash # 开启详细输出 set -x ./scripts/build-dmg.sh ``` ## 📱 应用程序使用 ### 安装后使用 1. 双击 DMG 文件挂载 2. 拖拽 `Wormhole Client.app` 到 Applications 3. 从 Applications 或 Launchpad 启动应用 ### 启动模式 - **双击启动**: 自动以 HTTP 模式启动并打开 Web 界面 - **终端启动**: 支持所有命令行参数 ```bash # HTTP 模式 /Applications/Wormhole\ Client.app/Contents/MacOS/Wormhole\ Client -mode http # 全局模式 (需要 sudo) sudo /Applications/Wormhole\ Client.app/Contents/MacOS/Wormhole\ Client -mode global ``` ### Web 界面 - **管理界面**: http://127.0.0.1:8080/gui - **统计信息**: http://127.0.0.1:8080/stats - **健康检查**: http://127.0.0.1:8080/health ## 🔒 代码签名 (可选) 如果需要分发给其他用户,建议进行代码签名: ```bash # 签名应用程序 codesign --force --deep --sign "Developer ID Application: Your Name" \ "build/Wormhole Client.app" # 签名 DMG codesign --force --sign "Developer ID Application: Your Name" \ "build/Wormhole-Client-v1.0.0.dmg" # 验证签名 codesign --verify --deep --strict --verbose=2 "build/Wormhole Client.app" spctl --assess --type execute --verbose "build/Wormhole Client.app" ``` ## 📈 版本管理 修改版本号: 1. 编辑 `scripts/build-macos.sh` 中的 `VERSION` 变量 2. 编辑 `Makefile` 中的 `VERSION` 变量 3. 重新构建 DMG ## 🤝 贡献 如果您发现构建脚本的问题或有改进建议,欢迎提交 Issue 或 Pull Request。 ## 📄 许可证 本构建系统遵循项目的 MIT 许可证。