From 28de33a5adc455ad86e62f59d55206b7be8e4369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=85=8E=E9=A5=BC=E6=9E=9C=E5=AD=90=E5=8D=B7=E9=B2=A8?= =?UTF-8?q?=E9=B1=BC=E8=BE=A3=E6=A4=92?= Date: Fri, 21 Mar 2025 19:21:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=AE=E5=A4=8D"=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=B7=B2=E6=8D=9F=E5=9D=8F"=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=88=B0cursor=5Fmac=5Fid=5Fmodifier.sh=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E4=BE=9B=E7=94=A8=E6=88=B7=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E4=BB=A5=E8=A7=A3=E5=86=B3macOS=E6=8F=90=E7=A4=BA=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=B7=B2=E6=8D=9F=E5=9D=8F=E6=97=A0=E6=B3=95=E6=89=93?= =?UTF-8?q?=E5=BC=80=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E4=BA=86=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E5=92=8C=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E5=8D=87=E4=BA=86=E8=84=9A=E6=9C=AC=E7=9A=84=E4=BA=A4=E4=BA=92?= =?UTF-8?q?=E6=80=A7=E5=92=8C=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/run/cursor_mac_id_modifier.sh | 77 +++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/scripts/run/cursor_mac_id_modifier.sh b/scripts/run/cursor_mac_id_modifier.sh index a632a86..1e01232 100644 --- a/scripts/run/cursor_mac_id_modifier.sh +++ b/scripts/run/cursor_mac_id_modifier.sh @@ -994,6 +994,43 @@ restore_feature() { fi } +# 解决"应用已损坏,无法打开"问题 +fix_damaged_app() { + log_info "正在修复"应用已损坏"问题..." + + # 检查Cursor应用是否存在 + if [ ! -d "$CURSOR_APP_PATH" ]; then + log_error "未找到Cursor应用: $CURSOR_APP_PATH" + return 1 + fi + + log_info "尝试移除隔离属性..." + if sudo xattr -rd com.apple.quarantine "$CURSOR_APP_PATH" 2>/dev/null; then + log_info "成功移除隔离属性" + else + log_warn "移除隔离属性失败,尝试其他方法..." + fi + + log_info "尝试重新签名应用..." + if sudo codesign --force --deep --sign - "$CURSOR_APP_PATH" 2>/dev/null; then + log_info "应用重新签名成功" + else + log_warn "应用重新签名失败" + fi + + echo + log_info "修复完成!请尝试重新打开Cursor应用" + echo + echo -e "${YELLOW}如果仍然无法打开,您可以尝试以下方法:${NC}" + echo "1. 在系统偏好设置->安全性与隐私中,点击"仍要打开"按钮" + echo "2. 暂时关闭Gatekeeper(不建议): sudo spctl --master-disable" + echo "3. 重新下载安装Cursor应用" + echo + echo -e "${BLUE}参考链接: https://sysin.org/blog/macos-if-crashes-when-opening/${NC}" + + return 0 +} + # 主函数 main() { @@ -1225,6 +1262,46 @@ main() { log_info "详细日志已保存到: $LOG_FILE" echo "如遇问题请将此日志文件提供给开发者以协助排查" echo + + # 添加修复"应用已损坏"选项 + echo + log_warn "应用修复选项" + echo "0) 忽略 - 不执行修复操作 (默认)" + echo "1) 修复"应用已损坏"问题 - 解决macOS提示应用已损坏无法打开的问题" + echo "" + printf "是否需要修复"应用已损坏"问题? [0-1] (默认 0): " + + # 读取用户输入 + damaged_choice="" + while read -r -t 0.1; do read -r; done 2>/dev/null + exec <&- + exec < /dev/tty + damaged_choice=$(read -r choice; echo "$choice") + if [ -z "$damaged_choice" ]; then + if [ -e "/dev/tty" ] && [ -r "/dev/tty" ] && [ -w "/dev/tty" ]; then + damaged_choice=$(head -n 1 < /dev/tty 2>/dev/null) + fi + fi + + echo "[INPUT_DEBUG] 应用修复选项选择: '$damaged_choice'" >> "$LOG_FILE" + + set +e + + # 处理用户选择 + if [ "$damaged_choice" = "1" ]; then + log_info "您选择了修复"应用已损坏"问题" + ( + if fix_damaged_app; then + log_info "修复"应用已损坏"问题完成" + else + log_warn "修复"应用已损坏"问题失败" + fi + ) + else + log_info "已跳过应用修复操作" + fi + + set -e } # 执行主函数