3 Commits

  1. 4
      README.md
  2. 4
      README_CN.md
  3. 4
      README_JP.md
  4. 2
      scripts/cursor_id_modifier.py
  5. 66
      scripts/run/cursor_linux_id_modifier.sh
  6. 64
      scripts/run/cursor_mac_id_modifier.sh
  7. 82
      scripts/run/cursor_win_id_modifier.ps1

4
README.md

@ -15,8 +15,8 @@
> ⚠️ **IMPORTANT NOTICE** > ⚠️ **IMPORTANT NOTICE**
> >
> This tool currently supports: > 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. > Please check your Cursor version before using this tool.

4
README_CN.md

@ -15,8 +15,8 @@
> ⚠️ **重要提示** > ⚠️ **重要提示**
> >
> 本工具当前支持版本: > 本工具当前支持版本:
> - ✅ Windows: 最新的 0.49.x 版本(已支持)
> - ✅ Mac/Linux: 最新的 0.49.x 版本(已支持,欢迎测试并反馈问题)
> - ✅ Windows: 最新的 0.50.x 版本(已支持)
> - ✅ Mac/Linux: 最新的 0.50.x 版本(已支持,欢迎测试并反馈问题)
> 使用前请确认您的 Cursor 版本。 > 使用前请确认您的 Cursor 版本。

4
README_JP.md

@ -15,8 +15,8 @@
> ⚠️ **重要なお知らせ** > ⚠️ **重要なお知らせ**
> >
> このツールは現在以下のバージョンをサポートしています: > このツールは現在以下のバージョンをサポートしています:
> - ✅ Windows: 最新の0.49.xバージョン(サポート済み)
> - ✅ Mac/Linux: 最新の0.49.xバージョン(サポート済み、フィードバック歓迎)
> - ✅ Windows: 最新の0.50.xバージョン(サポート済み)
> - ✅ Mac/Linux: 最新の0.50.xバージョン(サポート済み、フィードバック歓迎)
> >
> このツールを使用する前に、Cursorのバージョンを確認してください。 > このツールを使用する前に、Cursorのバージョンを確認してください。

2
scripts/cursor_id_modifier.py

@ -3,7 +3,7 @@
AppImage instructions: AppImage instructions:
mkdir -p ~/Downloads/Cursor mkdir -p ~/Downloads/Cursor
cd ~/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 mkdir -p ~/.local
rsync -rt ~/Downloads/Cursor/squashfs-root/usr/ ~/.local rsync -rt ~/Downloads/Cursor/squashfs-root/usr/ ~/.local
# ^ copy the subfolders not usr itself, so the resulting executable should be ~/.local/bin/cursor # ^ copy the subfolders not usr itself, so the resulting executable should be ~/.local/bin/cursor

66
scripts/run/cursor_linux_id_modifier.sh

@ -202,7 +202,7 @@ install_cursor_appimage() {
if ! find_appimage; then if ! find_appimage; then
log_warn "在 '$APPIMAGE_SEARCH_DIR' 目录下未找到 '$APPIMAGE_PATTERN' 文件。" 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 键继续..." read -p $"请将 Cursor AppImage 文件放入 '$APPIMAGE_SEARCH_DIR' 目录,然后按 Enter 键继续..."
@ -1084,6 +1084,67 @@ select_menu_option() {
done 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() { main() {
# 初始化日志文件 # 初始化日志文件
@ -1156,6 +1217,9 @@ main() {
exit 1 exit 1
fi fi
# 执行 Cursor 初始化清理
cursor_initialize_cleanup
# 备份并处理配置文件 (机器码重置选项) # 备份并处理配置文件 (机器码重置选项)
if ! generate_new_config; then if ! generate_new_config; then
log_error "处理配置文件时出错,脚本中止。" log_error "处理配置文件时出错,脚本中止。"

64
scripts/run/cursor_mac_id_modifier.sh

@ -50,6 +50,66 @@ log_cmd_output() {
echo "" >> "$LOG_FILE" 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() { get_current_user() {
if [ "$EUID" -eq 0 ]; then if [ "$EUID" -eq 0 ]; then
@ -1238,6 +1298,10 @@ main() {
# 执行主要功能 # 执行主要功能
check_permissions check_permissions
check_and_kill_cursor check_and_kill_cursor
# 执行 Cursor 初始化清理
cursor_initialize_cleanup
backup_config backup_config
# 新增:默认执行系统 MAC 地址修改 # 新增:默认执行系统 MAC 地址修改

82
scripts/run/cursor_win_id_modifier.ps1

@ -13,6 +13,70 @@ $NC = "`e[0m"
$STORAGE_FILE = "$env:APPDATA\Cursor\User\globalStorage\storage.json" $STORAGE_FILE = "$env:APPDATA\Cursor\User\globalStorage\storage.json"
$BACKUP_DIR = "$env:APPDATA\Cursor\User\globalStorage\backups" $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 { function Test-Administrator {
$user = [Security.Principal.WindowsIdentity]::GetCurrent() $user = [Security.Principal.WindowsIdentity]::GetCurrent()
@ -51,7 +115,7 @@ Write-Host ""
function Get-CursorVersion { function Get-CursorVersion {
try { try {
# 主要检测路径 # 主要检测路径
$packagePath = "$env:LOCALAPPDATA\Programs\cursor\resources\app\package.json"
$packagePath = "$env:LOCALAPPDATA\\Programs\\cursor\\resources\\app\\package.json"
if (Test-Path $packagePath) { if (Test-Path $packagePath) {
$packageJson = Get-Content $packagePath -Raw | ConvertFrom-Json $packageJson = Get-Content $packagePath -Raw | ConvertFrom-Json
@ -62,7 +126,7 @@ function Get-CursorVersion {
} }
# 备用路径检测 # 备用路径检测
$altPath = "$env:LOCALAPPDATA\cursor\resources\app\package.json"
$altPath = "$env:LOCALAPPDATA\\cursor\\resources\\app\\package.json"
if (Test-Path $altPath) { if (Test-Path $altPath) {
$packageJson = Get-Content $altPath -Raw | ConvertFrom-Json $packageJson = Get-Content $altPath -Raw | ConvertFrom-Json
if ($packageJson.version) { if ($packageJson.version) {
@ -85,7 +149,7 @@ function Get-CursorVersion {
$cursorVersion = Get-CursorVersion $cursorVersion = Get-CursorVersion
Write-Host "" Write-Host ""
Write-Host "$YELLOW[重要提示]$NC 最新的 0.49.x (以支持)"
Write-Host "$YELLOW[重要提示]$NC 最新的 0.50.x (以支持)"
Write-Host "" Write-Host ""
# 检查并关闭 Cursor 进程 # 检查并关闭 Cursor 进程
@ -139,6 +203,9 @@ function Close-CursorProcess {
Close-CursorProcess "Cursor" Close-CursorProcess "Cursor"
Close-CursorProcess "cursor" Close-CursorProcess "cursor"
# 执行 Cursor 初始化清理
Cursor-初始化
# 创建备份目录 # 创建备份目录
if (-not (Test-Path $BACKUP_DIR)) { if (-not (Test-Path $BACKUP_DIR)) {
New-Item -ItemType Directory -Path $BACKUP_DIR | Out-Null New-Item -ItemType Directory -Path $BACKUP_DIR | Out-Null
@ -537,12 +604,3 @@ function Write-ConfigFile {
throw "写入配置文件失败: $_" throw "写入配置文件失败: $_"
} }
} }
# 获取并显示版本信息
$cursorVersion = Get-CursorVersion
Write-Host ""
if ($cursorVersion) {
Write-Host "$GREEN[信息]$NC 检测到 Cursor 版本: $cursorVersion,继续执行..."
} else {
Write-Host "$YELLOW[警告]$NC 无法检测版本,将继续执行..."
}
Loading…
Cancel
Save