diff --git a/scripts/run/cursor_win_id_modifier.ps1 b/scripts/run/cursor_win_id_modifier.ps1 index fef1462..394e489 100644 --- a/scripts/run/cursor_win_id_modifier.ps1 +++ b/scripts/run/cursor_win_id_modifier.ps1 @@ -118,23 +118,57 @@ function Restart-CursorAndWait { } $cursorPath = $global:CursorProcessInfo.Path + + # 修复:确保路径是字符串类型 + if ($cursorPath -is [array]) { + $cursorPath = $cursorPath[0] + } + + # 验证路径不为空 + if ([string]::IsNullOrEmpty($cursorPath)) { + Write-Host "$RED❌ [错误]$NC Cursor路径为空" + return $false + } + Write-Host "$BLUE📍 [路径]$NC 使用路径: $cursorPath" if (-not (Test-Path $cursorPath)) { Write-Host "$RED❌ [错误]$NC Cursor可执行文件不存在: $cursorPath" - return $false + + # 尝试使用备用路径 + $backupPaths = @( + "$env:LOCALAPPDATA\Programs\cursor\Cursor.exe", + "$env:PROGRAMFILES\Cursor\Cursor.exe", + "$env:PROGRAMFILES(X86)\Cursor\Cursor.exe" + ) + + $foundPath = $null + foreach ($backupPath in $backupPaths) { + if (Test-Path $backupPath) { + $foundPath = $backupPath + Write-Host "$GREEN💡 [发现]$NC 使用备用路径: $foundPath" + break + } + } + + if (-not $foundPath) { + Write-Host "$RED❌ [错误]$NC 无法找到有效的Cursor可执行文件" + return $false + } + + $cursorPath = $foundPath } try { Write-Host "$GREEN🚀 [启动]$NC 正在启动Cursor..." $process = Start-Process -FilePath $cursorPath -PassThru -WindowStyle Hidden - Write-Host "$YELLOW⏳ [等待]$NC 等待15秒让Cursor完全启动并生成配置文件..." - Start-Sleep -Seconds 15 + Write-Host "$YELLOW⏳ [等待]$NC 等待20秒让Cursor完全启动并生成配置文件..." + Start-Sleep -Seconds 20 # 检查配置文件是否生成 $configPath = "$env:APPDATA\Cursor\User\globalStorage\storage.json" - $maxWait = 30 + $maxWait = 45 $waited = 0 while (-not (Test-Path $configPath) -and $waited -lt $maxWait) { @@ -145,8 +179,13 @@ function Restart-CursorAndWait { if (Test-Path $configPath) { Write-Host "$GREEN✅ [成功]$NC 配置文件已生成: $configPath" + + # 额外等待确保文件完全写入 + Write-Host "$YELLOW⏳ [等待]$NC 等待5秒确保配置文件完全写入..." + Start-Sleep -Seconds 5 } else { - Write-Host "$YELLOW⚠️ [警告]$NC 配置文件未在预期时间内生成,继续执行..." + Write-Host "$YELLOW⚠️ [警告]$NC 配置文件未在预期时间内生成" + Write-Host "$BLUE💡 [提示]$NC 可能需要手动启动Cursor一次来生成配置文件" } # 强制关闭Cursor @@ -165,6 +204,7 @@ function Restart-CursorAndWait { } catch { Write-Host "$RED❌ [错误]$NC 重启Cursor失败: $($_.Exception.Message)" + Write-Host "$BLUE💡 [调试]$NC 错误详情: $($_.Exception.GetType().FullName)" return $false } } @@ -370,15 +410,23 @@ function Close-CursorProcessAndSaveInfo { $global:CursorProcessInfo = $null - $process = Get-Process -Name $processName -ErrorAction SilentlyContinue - if ($process) { + $processes = Get-Process -Name $processName -ErrorAction SilentlyContinue + if ($processes) { Write-Host "$YELLOW⚠️ [警告]$NC 发现 $processName 正在运行" - # 💾 保存进程信息用于后续重启 + # 💾 保存进程信息用于后续重启 - 修复:确保获取单个进程路径 + $firstProcess = if ($processes -is [array]) { $processes[0] } else { $processes } + $processPath = $firstProcess.Path + + # 确保路径是字符串而不是数组 + if ($processPath -is [array]) { + $processPath = $processPath[0] + } + $global:CursorProcessInfo = @{ - ProcessName = $process.ProcessName - Path = $process.Path - StartTime = $process.StartTime + ProcessName = $firstProcess.ProcessName + Path = $processPath + StartTime = $firstProcess.StartTime } Write-Host "$GREEN💾 [保存]$NC 已保存进程信息: $($global:CursorProcessInfo.Path)"