mirror of
https://github.com/yuaotian/go-cursor-help.git
synced 2025-06-08 12:32:06 +08:00
refactor: Improve Cursor app code signing with robust retry mechanism
- Enhanced code signing process with multi-attempt strategy - Added detailed logging and error handling for signing failures - Implemented signature verification before app replacement - Provided manual recovery instructions for persistent signing issues - Removed automatic backup creation step
This commit is contained in:
parent
875c60738c
commit
68eff9c9d9
@ -413,25 +413,56 @@ modify_cursor_app_files() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 重新签名应用
|
# 重新签名应用(增加重试机制)
|
||||||
log_info "重新签名应用..."
|
local max_retry=3
|
||||||
codesign --sign - "$temp_app" --force --deep || {
|
local retry_count=0
|
||||||
log_warn "应用重新签名失败"
|
local sign_success=false
|
||||||
}
|
|
||||||
|
while [ $retry_count -lt $max_retry ]; do
|
||||||
|
((retry_count++))
|
||||||
|
log_info "尝试签名 (第 $retry_count 次)..."
|
||||||
|
|
||||||
|
# 使用更详细的签名参数
|
||||||
|
if codesign --sign - --force --deep --preserve-metadata=entitlements,identifier,flags "$temp_app" 2>&1 | tee /tmp/codesign.log; then
|
||||||
|
# 验证签名
|
||||||
|
if codesign --verify -vvvv "$temp_app" 2>/dev/null; then
|
||||||
|
sign_success=true
|
||||||
|
log_info "应用签名验证通过"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
log_warn "签名验证失败,错误日志:"
|
||||||
|
cat /tmp/codesign.log
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_warn "签名失败,错误日志:"
|
||||||
|
cat /tmp/codesign.log
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! $sign_success; then
|
||||||
|
log_error "经过 $max_retry 次尝试仍无法完成签名"
|
||||||
|
log_error "请手动执行以下命令完成签名:"
|
||||||
|
echo -e "${BLUE}sudo codesign --sign - --force --deep '${temp_app}'${NC}"
|
||||||
|
echo -e "${YELLOW}操作完成后,请手动将应用复制到原路径:${NC}"
|
||||||
|
echo -e "${BLUE}sudo cp -R '${temp_app}' '/Applications/'${NC}"
|
||||||
|
log_info "临时文件保留在:${temp_dir}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 替换原应用前增加签名验证
|
||||||
|
if ! codesign --verify -vvvv "$temp_app" &>/dev/null; then
|
||||||
|
log_error "最终签名验证失败,中止替换操作"
|
||||||
|
log_info "临时文件保留在:${temp_dir}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
# 关闭原应用
|
# 关闭原应用
|
||||||
log_info "正在关闭 Cursor..."
|
log_info "正在关闭 Cursor..."
|
||||||
osascript -e 'tell application "Cursor" to quit' || true
|
osascript -e 'tell application "Cursor" to quit' || true
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
# 创建应用备份
|
|
||||||
local backup_app="/Applications/Cursor.backup.${timestamp}.app"
|
|
||||||
log_info "创建应用备份: ${backup_app/$HOME/\~}"
|
|
||||||
if ! mv "$CURSOR_APP_PATH" "$backup_app"; then
|
|
||||||
log_error "创建备份失败"
|
|
||||||
rm -rf "$temp_dir"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 替换原应用
|
# 替换原应用
|
||||||
log_info "安装修改版应用..."
|
log_info "安装修改版应用..."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user