mirror of
https://github.com/yuaotian/go-cursor-help.git
synced 2025-06-08 04:22:06 +08:00
Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9a0a1260e0 | ||
![]() |
a864cf9284 | ||
![]() |
f3953cd838 | ||
![]() |
a48185e6a5 | ||
![]() |
c1b7e42e27 | ||
![]() |
776ecb0434 | ||
![]() |
86b2bae098 | ||
![]() |
291c6198bc | ||
![]() |
bc787f2076 |
@ -15,8 +15,8 @@
|
||||
> ⚠️ **IMPORTANT NOTICE**
|
||||
>
|
||||
> This tool currently supports:
|
||||
> - ✅ Windows: Latest 0.49.x versions (Supported)
|
||||
> - ✅ Mac/Linux: Latest 0.49.x versions (Supported, feedback welcome)
|
||||
> - ✅ Windows: Latest 0.50.x versions (Supported)
|
||||
> - ✅ Mac/Linux: Latest 0.50.x versions (Supported, feedback welcome)
|
||||
>
|
||||
> Please check your Cursor version before using this tool.
|
||||
|
||||
@ -503,8 +503,8 @@ Modifying this registry key may affect:
|
||||
</td>
|
||||
<td align="center">
|
||||
<b>WeChat</b><br>
|
||||
<img src="img/qun-12.png" width="500" alt="WeChat"><br>
|
||||
<em>二维码7天内(4月25日前)有效,过期请加微信</em>
|
||||
<img src="img/qun13.png" width="500" alt="WeChat"><br>
|
||||
<em>二维码7天内(5月30日前)有效,过期请加微信</em>
|
||||
</td>
|
||||
<!-- <td align="center">
|
||||
<b>ETC</b><br>
|
||||
|
@ -15,8 +15,8 @@
|
||||
> ⚠️ **重要提示**
|
||||
>
|
||||
> 本工具当前支持版本:
|
||||
> - ✅ Windows: 最新的 0.49.x 版本(已支持)
|
||||
> - ✅ Mac/Linux: 最新的 0.49.x 版本(已支持,欢迎测试并反馈问题)
|
||||
> - ✅ Windows: 最新的 0.50.x 版本(已支持)
|
||||
> - ✅ Mac/Linux: 最新的 0.50.x 版本(已支持,欢迎测试并反馈问题)
|
||||
|
||||
> 使用前请确认您的 Cursor 版本。
|
||||
|
||||
@ -442,8 +442,8 @@ irm https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/
|
||||
</td>
|
||||
<td align="center">
|
||||
<b>微信交流群</b><br>
|
||||
<img src="img/qun-12.png" width="500" alt="WeChat"><br>
|
||||
<small>二维码7天内(4月25日前)有效,过期请加微信</small>
|
||||
<img src="img/qun13.png" width="500" alt="WeChat"><br>
|
||||
<small>二维码7天内(5月30日前)有效,过期请加微信</small>
|
||||
</td>
|
||||
<td align="center">
|
||||
<b>公众号</b><br>
|
||||
|
@ -15,8 +15,8 @@
|
||||
> ⚠️ **重要なお知らせ**
|
||||
>
|
||||
> このツールは現在以下のバージョンをサポートしています:
|
||||
> - ✅ Windows: 最新の0.49.xバージョン(サポート済み)
|
||||
> - ✅ Mac/Linux: 最新の0.49.xバージョン(サポート済み、フィードバック歓迎)
|
||||
> - ✅ Windows: 最新の0.50.xバージョン(サポート済み)
|
||||
> - ✅ Mac/Linux: 最新の0.50.xバージョン(サポート済み、フィードバック歓迎)
|
||||
>
|
||||
> このツールを使用する前に、Cursorのバージョンを確認してください。
|
||||
|
||||
@ -500,8 +500,8 @@ macOS/Linuxユーザーはシステム内で同様の`cursor-updater`ディレ
|
||||
</td>
|
||||
<td align="center">
|
||||
<b>WeChat</b><br>
|
||||
<img src="img/qun-12.png" width="500" alt="WeChat"><br>
|
||||
<em>二维码7天内(4月25日前)有效,过期请加微信</em>
|
||||
<img src="img/qun13.png" width="500" alt="WeChat"><br>
|
||||
<em>二维码7天内(5月30日前)有效,过期请加微信</em>
|
||||
</td>
|
||||
<!-- <td align="center">
|
||||
<b>ETC</b><br>
|
||||
|
BIN
img/qun13.png
Normal file
BIN
img/qun13.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 127 KiB |
@ -3,7 +3,7 @@
|
||||
AppImage instructions:
|
||||
mkdir -p ~/Downloads/Cursor
|
||||
cd ~/Downloads/Cursor
|
||||
cd Cursor && ./Cursor-0.49.5-x86_64.AppImage --appimage-extract
|
||||
cd Cursor && ./Cursor-0.50.5-x86_64.AppImage --appimage-extract
|
||||
mkdir -p ~/.local
|
||||
rsync -rt ~/Downloads/Cursor/squashfs-root/usr/ ~/.local
|
||||
# ^ copy the subfolders not usr itself, so the resulting executable should be ~/.local/bin/cursor
|
||||
|
@ -202,7 +202,7 @@ install_cursor_appimage() {
|
||||
if ! find_appimage; then
|
||||
log_warn "在 '$APPIMAGE_SEARCH_DIR' 目录下未找到 '$APPIMAGE_PATTERN' 文件。"
|
||||
# --- 新增:添加文件名格式提醒 ---
|
||||
log_info "请确保 AppImage 文件名格式类似: Cursor-版本号-架构.AppImage (例如: Cursor-0.49.6-aarch64.AppImage 或 Cursor-x.y.z-x86_64.AppImage)"
|
||||
log_info "请确保 AppImage 文件名格式类似: Cursor-版本号-架构.AppImage (例如: Cursor-0.50.6-aarch64.AppImage 或 Cursor-x.y.z-x86_64.AppImage)"
|
||||
# --- 结束:添加文件名格式提醒 ---
|
||||
# 等待用户放置文件
|
||||
read -p $"请将 Cursor AppImage 文件放入 '$APPIMAGE_SEARCH_DIR' 目录,然后按 Enter 键继续..."
|
||||
@ -1084,6 +1084,67 @@ select_menu_option() {
|
||||
done
|
||||
}
|
||||
|
||||
# 新增 Cursor 初始化清理函数
|
||||
cursor_initialize_cleanup() {
|
||||
log_info "正在执行 Cursor 初始化清理..."
|
||||
# CURSOR_CONFIG_DIR 在脚本全局已定义: $HOME/.config/Cursor
|
||||
local USER_CONFIG_BASE_PATH="$CURSOR_CONFIG_DIR/User"
|
||||
|
||||
log_debug "用户配置基础路径: $USER_CONFIG_BASE_PATH"
|
||||
|
||||
local files_to_delete=(
|
||||
"$USER_CONFIG_BASE_PATH/globalStorage/state.vscdb"
|
||||
"$USER_CONFIG_BASE_PATH/globalStorage/state.vscdb.backup"
|
||||
)
|
||||
|
||||
local folder_to_clean_contents="$USER_CONFIG_BASE_PATH/History"
|
||||
local folder_to_delete_completely="$USER_CONFIG_BASE_PATH/workspaceStorage"
|
||||
|
||||
# 删除指定文件
|
||||
for file_path in "${files_to_delete[@]}"; do
|
||||
log_debug "检查文件: $file_path"
|
||||
if [ -f "$file_path" ]; then
|
||||
if rm -f "$file_path"; then
|
||||
log_info "已删除文件: $file_path"
|
||||
else
|
||||
log_error "删除文件 $file_path 失败"
|
||||
fi
|
||||
else
|
||||
log_warn "文件不存在,跳过删除: $file_path"
|
||||
fi
|
||||
done
|
||||
|
||||
# 清空指定文件夹内容
|
||||
log_debug "检查待清空文件夹: $folder_to_clean_contents"
|
||||
if [ -d "$folder_to_clean_contents" ]; then
|
||||
if find "$folder_to_clean_contents" -mindepth 1 -delete; then
|
||||
log_info "已清空文件夹内容: $folder_to_clean_contents"
|
||||
else
|
||||
if [ -z "$(ls -A "$folder_to_clean_contents")" ]; then
|
||||
log_info "文件夹 $folder_to_clean_contents 现在为空。"
|
||||
else
|
||||
log_error "清空文件夹 $folder_to_clean_contents 内容失败 (部分或全部)。请检查权限或手动删除。"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log_warn "文件夹不存在,跳过清空: $folder_to_clean_contents"
|
||||
fi
|
||||
|
||||
# 删除指定文件夹及其内容
|
||||
log_debug "检查待删除文件夹: $folder_to_delete_completely"
|
||||
if [ -d "$folder_to_delete_completely" ]; then
|
||||
if rm -rf "$folder_to_delete_completely"; then
|
||||
log_info "已删除文件夹: $folder_to_delete_completely"
|
||||
else
|
||||
log_error "删除文件夹 $folder_to_delete_completely 失败"
|
||||
fi
|
||||
else
|
||||
log_warn "文件夹不存在,跳过删除: $folder_to_delete_completely"
|
||||
fi
|
||||
|
||||
log_info "Cursor 初始化清理完成。"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
# 初始化日志文件
|
||||
@ -1109,9 +1170,13 @@ main() {
|
||||
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝
|
||||
"
|
||||
echo -e "${BLUE}=====================================================${NC}"
|
||||
echo -e "${GREEN} Cursor Linux 启动与修改工具 ${NC}"
|
||||
echo -e "${GREEN} Cursor Linux 启动与修改工具(免费) ${NC}"
|
||||
echo -e "${YELLOW} 关注公众号【煎饼果子卷AI】 ${NC}"
|
||||
echo -e "${YELLOW} 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}"
|
||||
echo -e "${BLUE}=====================================================${NC}"
|
||||
echo
|
||||
echo -e "${GREEN} [小小广告] 出售CursorPro教育号一年质保三个月,有需要找我(86),WeChat:JavaRookie666 ${NC}"
|
||||
echo
|
||||
echo -e "${YELLOW}[提示]${NC} 本工具旨在修改 Cursor 以解决可能的启动问题或设备限制。"
|
||||
echo -e "${YELLOW}[提示]${NC} 它将优先修改 JS 文件,并可选择重置设备ID和禁用自动更新。"
|
||||
echo -e "${YELLOW}[提示]${NC} 如果未找到 Cursor,将尝试从 '$APPIMAGE_SEARCH_DIR' 目录安装。"
|
||||
@ -1156,6 +1221,9 @@ main() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 执行 Cursor 初始化清理
|
||||
# cursor_initialize_cleanup
|
||||
|
||||
# 备份并处理配置文件 (机器码重置选项)
|
||||
if ! generate_new_config; then
|
||||
log_error "处理配置文件时出错,脚本中止。"
|
||||
|
183
scripts/run/cursor_mac_id_modifier.sh
Executable file → Normal file
183
scripts/run/cursor_mac_id_modifier.sh
Executable file → Normal file
@ -50,6 +50,66 @@ log_cmd_output() {
|
||||
echo "" >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
# 新增 Cursor 初始化清理函数
|
||||
cursor_initialize_cleanup() {
|
||||
log_info "正在执行 Cursor 初始化清理..."
|
||||
local BASE_PATH="$HOME/Library/Application Support/Cursor/User"
|
||||
|
||||
log_debug "基础路径: $BASE_PATH"
|
||||
|
||||
local files_to_delete=(
|
||||
"$BASE_PATH/globalStorage/state.vscdb"
|
||||
"$BASE_PATH/globalStorage/state.vscdb.backup"
|
||||
)
|
||||
|
||||
local folder_to_clean_contents="$BASE_PATH/History"
|
||||
local folder_to_delete_completely="$BASE_PATH/workspaceStorage"
|
||||
|
||||
# 删除指定文件
|
||||
for file_path in "${files_to_delete[@]}"; do
|
||||
log_debug "检查文件: $file_path"
|
||||
if [ -f "$file_path" ]; then
|
||||
if rm -f "$file_path"; then
|
||||
log_info "已删除文件: $file_path"
|
||||
else
|
||||
log_error "删除文件 $file_path 失败"
|
||||
fi
|
||||
else
|
||||
log_warn "文件不存在,跳过删除: $file_path"
|
||||
fi
|
||||
done
|
||||
|
||||
# 清空指定文件夹内容
|
||||
log_debug "检查待清空文件夹: $folder_to_clean_contents"
|
||||
if [ -d "$folder_to_clean_contents" ]; then
|
||||
if find "$folder_to_clean_contents" -mindepth 1 -delete; then
|
||||
log_info "已清空文件夹内容: $folder_to_clean_contents"
|
||||
else
|
||||
if [ -z "$(ls -A "$folder_to_clean_contents")" ]; then
|
||||
log_info "文件夹 $folder_to_clean_contents 现在为空。" # 通常find成功即代表操作完成
|
||||
else
|
||||
log_error "清空文件夹 $folder_to_clean_contents 内容失败 (部分或全部)。请检查权限或手动删除。"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log_warn "文件夹不存在,跳过清空: $folder_to_clean_contents"
|
||||
fi
|
||||
|
||||
# 删除指定文件夹及其内容
|
||||
log_debug "检查待删除文件夹: $folder_to_delete_completely"
|
||||
if [ -d "$folder_to_delete_completely" ]; then
|
||||
if rm -rf "$folder_to_delete_completely"; then
|
||||
log_info "已删除文件夹: $folder_to_delete_completely"
|
||||
else
|
||||
log_error "删除文件夹 $folder_to_delete_completely 失败"
|
||||
fi
|
||||
else
|
||||
log_warn "文件夹不存在,跳过删除: $folder_to_delete_completely"
|
||||
fi
|
||||
|
||||
log_info "Cursor 初始化清理完成。"
|
||||
}
|
||||
|
||||
# 获取当前用户
|
||||
get_current_user() {
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
@ -72,7 +132,48 @@ BACKUP_DIR="$HOME/Library/Application Support/Cursor/User/globalStorage/backups"
|
||||
# 定义 Cursor 应用程序路径
|
||||
CURSOR_APP_PATH="/Applications/Cursor.app"
|
||||
|
||||
# 新增:辅助函数,用于修改单个接口的 MAC 地址
|
||||
# 新增:判断接口类型是否为Wi-Fi
|
||||
is_wifi_interface() {
|
||||
local interface_name="$1"
|
||||
# 通过networksetup判断接口类型
|
||||
networksetup -listallhardwareports | \
|
||||
awk -v dev="$interface_name" 'BEGIN{found=0} /Hardware Port: Wi-Fi/{found=1} /Device:/{if(found && $2==dev){exit 0}else{found=0}}' && return 0 || return 1
|
||||
}
|
||||
|
||||
# 新增:生成本地管理+单播MAC地址(IEEE标准)
|
||||
generate_local_unicast_mac() {
|
||||
# 第一字节:LAA+单播(低两位10),其余随机
|
||||
local first_byte=$(( (RANDOM & 0xFC) | 0x02 ))
|
||||
local mac=$(printf '%02x:%02x:%02x:%02x:%02x:%02x' \
|
||||
$first_byte $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)))
|
||||
echo "$mac"
|
||||
}
|
||||
|
||||
# 新增:自动检测并调用macchanger或spoof-mac
|
||||
try_third_party_mac_tool() {
|
||||
local interface_name="$1"
|
||||
local random_mac="$2"
|
||||
local success=false
|
||||
# 优先macchanger
|
||||
if command -v macchanger >/dev/null 2>&1; then
|
||||
log_info "尝试使用macchanger修改接口 '$interface_name' 的MAC地址..."
|
||||
sudo macchanger -m "$random_mac" "$interface_name" >>"$LOG_FILE" 2>&1 && success=true
|
||||
fi
|
||||
# 若macchanger不可用,尝试spoof-mac
|
||||
if ! $success && command -v spoof-mac >/dev/null 2>&1; then
|
||||
log_info "尝试使用spoof-mac修改接口 '$interface_name' 的MAC地址..."
|
||||
sudo spoof-mac set $random_mac $interface_name >>"$LOG_FILE" 2>&1 && success=true
|
||||
fi
|
||||
if $success; then
|
||||
log_info "第三方工具修改MAC地址成功。"
|
||||
return 0
|
||||
else
|
||||
log_warn "未检测到可用的macchanger或spoof-mac,或第三方工具修改失败。"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 修改_change_mac_for_one_interface,失败时自动调用第三方工具,并集成恢复/重试菜单
|
||||
_change_mac_for_one_interface() {
|
||||
local interface_name="$1"
|
||||
if [ -z "$interface_name" ]; then
|
||||
@ -82,7 +183,6 @@ _change_mac_for_one_interface() {
|
||||
|
||||
log_info "开始处理接口: $interface_name"
|
||||
|
||||
# 获取当前 MAC 地址用于日志记录
|
||||
local current_mac=$(ifconfig "$interface_name" | awk '/ether/{print $2}')
|
||||
if [ -z "$current_mac" ]; then
|
||||
log_warn "无法获取接口 '$interface_name' 的当前 MAC 地址,可能已禁用或不存在。"
|
||||
@ -90,25 +190,27 @@ _change_mac_for_one_interface() {
|
||||
log_info "接口 '$interface_name' 当前 MAC 地址: $current_mac"
|
||||
fi
|
||||
|
||||
# 生成随机 MAC 地址 (保留本地管理位,避免冲突)
|
||||
local random_mac=$(printf '02:%02x:%02x:%02x:%02x:%02x' $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)))
|
||||
log_info "为接口 '$interface_name' 生成新的随机 MAC 地址: $random_mac"
|
||||
local random_mac=$(generate_local_unicast_mac)
|
||||
log_info "为接口 '$interface_name' 生成新的本地管理+单播 MAC 地址: $random_mac"
|
||||
|
||||
local mac_change_success=false
|
||||
|
||||
# 临时禁用接口
|
||||
if is_wifi_interface "$interface_name"; then
|
||||
log_info "检测到接口 '$interface_name' 为Wi-Fi,先断开SSID..."
|
||||
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -z 2>>"$LOG_FILE"
|
||||
sleep 3
|
||||
fi
|
||||
|
||||
log_info "临时禁用接口 '$interface_name' 以修改 MAC 地址 (网络会短暂中断)..."
|
||||
if ! sudo ifconfig "$interface_name" down; then
|
||||
log_error "禁用接口 '$interface_name' 失败,跳过该接口的 MAC 地址修改。"
|
||||
echo -e "${RED}禁用网络接口 '$interface_name' 失败。请检查日志: $LOG_FILE ${NC}"
|
||||
# 即使禁用失败,仍然尝试启用接口 (如果之前是启用的)
|
||||
sudo ifconfig "$interface_name" up 2>/dev/null || true
|
||||
return 1
|
||||
else
|
||||
log_info "接口 '$interface_name' 已禁用,等待1秒..."
|
||||
sleep 1 # 添加短暂延迟确保接口状态改变
|
||||
log_info "接口 '$interface_name' 已禁用,等待3秒..."
|
||||
sleep 3
|
||||
|
||||
# 尝试修改 MAC 地址
|
||||
log_info "尝试为接口 '$interface_name' 设置 MAC 地址: $random_mac"
|
||||
sudo ifconfig $interface_name up
|
||||
if sudo ifconfig "$interface_name" ether "$random_mac"; then
|
||||
@ -124,37 +226,66 @@ _change_mac_for_one_interface() {
|
||||
log_error "尝试修改接口 '$interface_name' 的 MAC 地址失败。"
|
||||
log_error "请检查接口名称是否正确,或尝试手动执行: sudo ifconfig $interface_name down && sudo ifconfig $interface_name ether <新MAC地址> && sudo ifconfig $interface_name up"
|
||||
echo -e "${RED}修改接口 '$interface_name' 的 MAC 地址失败。请检查日志: $LOG_FILE ${NC}"
|
||||
echo -e "${YELLOW}如多次失败,可尝试安装并使用macchanger或spoof-mac工具。${NC}"
|
||||
echo -e "${YELLOW}macchanger安装: brew install macchanger,spoof-mac安装: brew install spoof-mac${NC}"
|
||||
# 自动尝试第三方工具
|
||||
if try_third_party_mac_tool "$interface_name" "$random_mac"; then
|
||||
mac_change_success=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 重新启用接口
|
||||
log_info "重新启用接口 '$interface_name'..."
|
||||
if ! sudo ifconfig "$interface_name" up; then
|
||||
log_error "重新启用接口 '$interface_name' 失败。"
|
||||
echo -e "${RED}重新启用网络接口 '$interface_name' 失败。请检查日志: $LOG_FILE ${NC}"
|
||||
# 即使启用失败,也报告 MAC 修改尝试的结果
|
||||
if $mac_change_success; then
|
||||
echo -e "${YELLOW}接口 '$interface_name' 的 MAC 地址已修改,但重新启用接口失败。请手动检查网络连接。${NC}"
|
||||
fi
|
||||
return 1
|
||||
else
|
||||
log_info "接口 '$interface_name' 已重新启用。等待网络恢复..."
|
||||
sleep 2 # 等待网络恢复
|
||||
# Optional: Add a network connectivity check here
|
||||
sleep 2
|
||||
if $mac_change_success; then
|
||||
local final_mac_check=$(ifconfig "$interface_name" | awk '/ether/{print $2}')
|
||||
log_info "最终验证接口 '$interface_name' 新 MAC 地址 (接口启用状态下): $final_mac_check"
|
||||
if [ "$final_mac_check" == "$random_mac" ]; then
|
||||
echo -e "${GREEN}已成功临时修改接口 '$interface_name' 的 MAC 地址。重启后恢复。${NC}"
|
||||
return 0 # 成功
|
||||
echo -e "${GREEN}已成功临时修改接口 '$interface_name' 的 MAC 地址(本地管理+单播)。重启后恢复。${NC}"
|
||||
return 0
|
||||
else
|
||||
log_warn "最终验证失败,接口 '$interface_name' 的 MAC 地址可能未生效或已被重置。"
|
||||
echo -e "${YELLOW}接口 '$interface_name' MAC 地址修改尝试完成,但最终验证失败。请检查接口状态和日志。${NC}"
|
||||
return 1 # 验证失败
|
||||
# 失败时提供恢复/重试选项
|
||||
select_menu_option "MAC地址修改失败,您可以:" "重试本接口|跳过本接口|退出脚本" 0
|
||||
local choice=$?
|
||||
if [ "$choice" = "0" ]; then
|
||||
log_info "用户选择重试本接口。"
|
||||
_change_mac_for_one_interface "$interface_name"
|
||||
elif [ "$choice" = "1" ]; then
|
||||
log_info "用户选择跳过本接口。"
|
||||
return 1
|
||||
else
|
||||
log_info "用户选择退出脚本。"
|
||||
exit 1
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}接口 '$interface_name' MAC 地址修改尝试失败。请检查日志: $LOG_FILE ${NC}"
|
||||
return 1 # 修改失败
|
||||
# 失败时提供恢复/重试选项
|
||||
select_menu_option "MAC地址修改失败,您可以:" "重试本接口|跳过本接口|退出脚本" 0
|
||||
local choice=$?
|
||||
if [ "$choice" = "0" ]; then
|
||||
log_info "用户选择重试本接口。"
|
||||
_change_mac_for_one_interface "$interface_name"
|
||||
elif [ "$choice" = "1" ]; then
|
||||
log_info "用户选择跳过本接口。"
|
||||
return 1
|
||||
else
|
||||
log_info "用户选择退出脚本。"
|
||||
exit 1
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@ -202,9 +333,9 @@ check_and_kill_cursor() {
|
||||
else
|
||||
kill $CURSOR_PIDS 2>/dev/null || true
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
|
||||
|
||||
sleep 3
|
||||
|
||||
# 同样使用更精确的匹配来检查进程是否还在运行
|
||||
if ! ps aux | grep -i "/Applications/Cursor.app" | grep -v grep > /dev/null; then
|
||||
log_info "Cursor 进程已成功关闭"
|
||||
@ -836,8 +967,8 @@ global.macMachineId = '${mac_machine_id}';
|
||||
log_warn "签名失败,错误日志:"
|
||||
cat /tmp/codesign.log
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
|
||||
sleep 3
|
||||
done
|
||||
|
||||
if ! $sign_success; then
|
||||
@ -1160,6 +1291,8 @@ main() {
|
||||
echo -e "${YELLOW} 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}"
|
||||
echo -e "${BLUE}================================${NC}"
|
||||
echo
|
||||
echo -e "${YELLOW} [小小广告] 出售CursorPro教育号一年质保三个月,有需要找我(86),WeChat:JavaRookie666 ${NC}"
|
||||
echo
|
||||
echo -e "${YELLOW}[重要提示]${NC} 本工具默认会修改系统 MAC 地址 (临时) 并修改 JS 文件以重置设备标识。"
|
||||
echo -e "${YELLOW}[重要提示]${NC} 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】"
|
||||
echo
|
||||
@ -1167,6 +1300,10 @@ main() {
|
||||
# 执行主要功能
|
||||
check_permissions
|
||||
check_and_kill_cursor
|
||||
|
||||
# 执行 Cursor 初始化清理
|
||||
# cursor_initialize_cleanup
|
||||
|
||||
backup_config
|
||||
|
||||
# 新增:默认执行系统 MAC 地址修改
|
||||
|
@ -13,6 +13,70 @@ $NC = "`e[0m"
|
||||
$STORAGE_FILE = "$env:APPDATA\Cursor\User\globalStorage\storage.json"
|
||||
$BACKUP_DIR = "$env:APPDATA\Cursor\User\globalStorage\backups"
|
||||
|
||||
# 新增 Cursor 初始化函数
|
||||
function Cursor-初始化 {
|
||||
Write-Host "$GREEN[信息]$NC 正在执行 Cursor 初始化清理..."
|
||||
$BASE_PATH = "$env:APPDATA\Cursor\User"
|
||||
|
||||
$filesToDelete = @(
|
||||
(Join-Path -Path $BASE_PATH -ChildPath "globalStorage\\state.vscdb"),
|
||||
(Join-Path -Path $BASE_PATH -ChildPath "globalStorage\\state.vscdb.backup")
|
||||
)
|
||||
|
||||
$folderToCleanContents = Join-Path -Path $BASE_PATH -ChildPath "History"
|
||||
$folderToDeleteCompletely = Join-Path -Path $BASE_PATH -ChildPath "workspaceStorage"
|
||||
|
||||
Write-Host "$BLUE[调试]$NC 基础路径: $BASE_PATH"
|
||||
|
||||
# 删除指定文件
|
||||
foreach ($file in $filesToDelete) {
|
||||
Write-Host "$BLUE[调试]$NC 检查文件: $file"
|
||||
if (Test-Path $file) {
|
||||
try {
|
||||
Remove-Item -Path $file -Force -ErrorAction Stop
|
||||
Write-Host "$GREEN[成功]$NC 已删除文件: $file"
|
||||
}
|
||||
catch {
|
||||
Write-Host "$RED[错误]$NC 删除文件 $file 失败: $($_.Exception.Message)"
|
||||
}
|
||||
} else {
|
||||
Write-Host "$YELLOW[警告]$NC 文件不存在,跳过删除: $file"
|
||||
}
|
||||
}
|
||||
|
||||
# 清空指定文件夹内容
|
||||
Write-Host "$BLUE[调试]$NC 检查待清空文件夹: $folderToCleanContents"
|
||||
if (Test-Path $folderToCleanContents) {
|
||||
try {
|
||||
# 获取子项进行删除,以避免删除 History 文件夹本身
|
||||
Get-ChildItem -Path $folderToCleanContents -Recurse | Remove-Item -Recurse -Force -ErrorAction Stop
|
||||
Write-Host "$GREEN[成功]$NC 已清空文件夹内容: $folderToCleanContents"
|
||||
}
|
||||
catch {
|
||||
Write-Host "$RED[错误]$NC 清空文件夹 $folderToCleanContents 内容失败: $($_.Exception.Message)"
|
||||
}
|
||||
} else {
|
||||
Write-Host "$YELLOW[警告]$NC 文件夹不存在,跳过清空: $folderToCleanContents"
|
||||
}
|
||||
|
||||
# 删除指定文件夹及其内容
|
||||
Write-Host "$BLUE[调试]$NC 检查待删除文件夹: $folderToDeleteCompletely"
|
||||
if (Test-Path $folderToDeleteCompletely) {
|
||||
try {
|
||||
Remove-Item -Path $folderToDeleteCompletely -Recurse -Force -ErrorAction Stop
|
||||
Write-Host "$GREEN[成功]$NC 已删除文件夹: $folderToDeleteCompletely"
|
||||
}
|
||||
catch {
|
||||
Write-Host "$RED[错误]$NC 删除文件夹 $folderToDeleteCompletely 失败: $($_.Exception.Message)"
|
||||
}
|
||||
} else {
|
||||
Write-Host "$YELLOW[警告]$NC 文件夹不存在,跳过删除: $folderToDeleteCompletely"
|
||||
}
|
||||
|
||||
Write-Host "$GREEN[信息]$NC Cursor 初始化清理完成。"
|
||||
Write-Host "" # 添加空行以改善输出格式
|
||||
}
|
||||
|
||||
# 检查管理员权限
|
||||
function Test-Administrator {
|
||||
$user = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
@ -44,14 +108,15 @@ Write-Host "$GREEN Cursor 设备ID 修改工具 $NC"
|
||||
Write-Host "$YELLOW 关注公众号【煎饼果子卷AI】 $NC"
|
||||
Write-Host "$YELLOW 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) $NC"
|
||||
Write-Host "$YELLOW [重要提示] 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】 $NC"
|
||||
Write-Host "$BLUE================================$NC"
|
||||
Write-Host ""
|
||||
Write-Host "$YELLOW [小小广告] 出售CursorPro教育号一年质保三个月,有需要找我(86),WeChat:JavaRookie666 $NC"
|
||||
Write-Host "$BLUE================================$NC"
|
||||
|
||||
# 获取并显示 Cursor 版本
|
||||
function Get-CursorVersion {
|
||||
try {
|
||||
# 主要检测路径
|
||||
$packagePath = "$env:LOCALAPPDATA\Programs\cursor\resources\app\package.json"
|
||||
$packagePath = "$env:LOCALAPPDATA\\Programs\\cursor\\resources\\app\\package.json"
|
||||
|
||||
if (Test-Path $packagePath) {
|
||||
$packageJson = Get-Content $packagePath -Raw | ConvertFrom-Json
|
||||
@ -62,7 +127,7 @@ function Get-CursorVersion {
|
||||
}
|
||||
|
||||
# 备用路径检测
|
||||
$altPath = "$env:LOCALAPPDATA\cursor\resources\app\package.json"
|
||||
$altPath = "$env:LOCALAPPDATA\\cursor\\resources\\app\\package.json"
|
||||
if (Test-Path $altPath) {
|
||||
$packageJson = Get-Content $altPath -Raw | ConvertFrom-Json
|
||||
if ($packageJson.version) {
|
||||
@ -85,7 +150,7 @@ function Get-CursorVersion {
|
||||
$cursorVersion = Get-CursorVersion
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "$YELLOW[重要提示]$NC 最新的 0.49.x (以支持)"
|
||||
Write-Host "$YELLOW[重要提示]$NC 最新的 0.50.x (以支持)"
|
||||
Write-Host ""
|
||||
|
||||
# 检查并关闭 Cursor 进程
|
||||
@ -139,6 +204,9 @@ function Close-CursorProcess {
|
||||
Close-CursorProcess "Cursor"
|
||||
Close-CursorProcess "cursor"
|
||||
|
||||
# 执行 Cursor 初始化清理
|
||||
# Cursor-初始化
|
||||
|
||||
# 创建备份目录
|
||||
if (-not (Test-Path $BACKUP_DIR)) {
|
||||
New-Item -ItemType Directory -Path $BACKUP_DIR | Out-Null
|
||||
@ -536,13 +604,4 @@ function Write-ConfigFile {
|
||||
catch {
|
||||
throw "写入配置文件失败: $_"
|
||||
}
|
||||
}
|
||||
|
||||
# 获取并显示版本信息
|
||||
$cursorVersion = Get-CursorVersion
|
||||
Write-Host ""
|
||||
if ($cursorVersion) {
|
||||
Write-Host "$GREEN[信息]$NC 检测到 Cursor 版本: $cursorVersion,继续执行..."
|
||||
} else {
|
||||
Write-Host "$YELLOW[警告]$NC 无法检测版本,将继续执行..."
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user