#!/bin/bash # macOS Ghost Client 安装脚本 # 用法: ./install.sh [ghost路径] SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" GHOST_SRC="${1:-$SCRIPT_DIR/build/bin/ghost}" GHOST_DST="/usr/local/bin/ghost" PLIST_DST="/Library/LaunchDaemons/com.ghost.client.plist" echo "=== Ghost Client 安装程序 ===" echo "源文件: $GHOST_SRC" # 检查源文件 if [ ! -f "$GHOST_SRC" ]; then echo "" echo "错误: 找不到 $GHOST_SRC" echo "" echo "请先编译: ./build.sh" echo "" echo "或指定路径: $0 " exit 1 fi set -e # 1. 停止旧服务(只停止安装目录的,不影响调试目录) echo "[1/6] 停止旧服务..." sudo launchctl unload "$PLIST_DST" 2>/dev/null || true sudo pkill -9 -f "$GHOST_DST" 2>/dev/null || true # 2. 复制程序 echo "[2/6] 安装程序到 $GHOST_DST..." sudo cp "$GHOST_SRC" "$GHOST_DST" sudo chmod +x "$GHOST_DST" # 3. 清除隔离属性 echo "[3/6] 清除隔离属性..." sudo xattr -cr "$GHOST_DST" # 4. 签名 echo "[4/6] 签名程序..." sudo codesign --force --deep --sign - "$GHOST_DST" # 5. 创建 launchd plist echo "[5/6] 创建 launchd 服务..." sudo tee "$PLIST_DST" > /dev/null << 'EOF' Label com.ghost.client ProgramArguments /usr/local/bin/ghost RunAtLoad KeepAlive StandardOutPath /var/log/ghost.log StandardErrorPath /var/log/ghost.log EOF sudo chown root:wheel "$PLIST_DST" sudo chmod 644 "$PLIST_DST" # 6. 完成 echo "[6/6] 安装完成!" echo "" echo "========================================" echo "重要: 首次运行需要授权系统权限" echo "========================================" echo "" echo "请执行以下步骤:" echo "" echo "1. 手动运行以触发权限请求:" echo " $GHOST_DST" echo "" echo "2. 授权后按 Ctrl+C 停止程序(权限需重启生效)" echo "" echo "3. 启动服务:" echo " sudo launchctl load $PLIST_DST" echo "" echo "如未弹出授权对话框,手动添加:" echo " 系统设置 > 隐私与安全性 > 屏幕录制 > 添加 ghost" echo " 系统设置 > 隐私与安全性 > 辅助功能 > 添加 ghost" echo "" echo "常用命令:" echo " 启动: sudo launchctl start com.ghost.client" echo " 停止: sudo launchctl stop com.ghost.client" echo " 卸载: sudo launchctl unload $PLIST_DST" echo " 日志: tail -f /var/log/ghost.log" echo ""