fix: Windows repeated install leaves multiple claude.exe files
- Clean up all claude.*.exe (except claude.orig.exe) before each install - First install: rename claude.exe → claude.orig.exe - Repeat install: delete claude.exe, fallback to timestamp rename if locked - No more accumulation of claude.old.exe / claude.timestamp.exe Fixes #17
This commit is contained in:
+17
-6
@@ -446,20 +446,31 @@ foreach ($loc in @(
|
||||
}
|
||||
}
|
||||
|
||||
# Rename claude.exe so .cmd takes precedence
|
||||
# (rename works even if the exe is running; delete does not)
|
||||
# Clean up leftover timestamped/old exes from previous installs
|
||||
Get-ChildItem $BinDir -Filter "claude.*.exe" -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.Name -ne "claude.orig.exe" } |
|
||||
ForEach-Object { Remove-Item $_.FullName -Force -ErrorAction SilentlyContinue }
|
||||
|
||||
# Remove claude.exe so .cmd takes precedence
|
||||
# Keep one backup as claude.orig.exe, discard the rest
|
||||
if (Test-Path $claudeExe) {
|
||||
if (-not (Test-Path $claudeOrigExe)) {
|
||||
Rename-Item $claudeExe $claudeOrigExe -Force
|
||||
Write-OK "Renamed claude.exe → claude.orig.exe"
|
||||
} else {
|
||||
# Backup already exists, rename to .old for cleanup
|
||||
$oldExe = Join-Path $BinDir "claude.old.exe"
|
||||
Rename-Item $claudeExe $oldExe -Force -ErrorAction SilentlyContinue
|
||||
Write-OK "Moved claude.exe aside (.cmd now takes priority)"
|
||||
# Backup already exists — just remove the new claude.exe
|
||||
try {
|
||||
Remove-Item -Force $claudeExe
|
||||
} catch {
|
||||
# File locked (running process) — rename aside with timestamp
|
||||
$ts = Get-Date -Format "yyyyMMddHHmmss"
|
||||
Rename-Item $claudeExe "claude.$ts.exe" -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
Write-OK "Removed claude.exe (.cmd now takes priority)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Write .cmd launcher for 'claude'
|
||||
foreach ($cmd in @("claude")) {
|
||||
$launcherContent | Set-Content (Join-Path $BinDir "$cmd.cmd") -Encoding ASCII
|
||||
|
||||
Reference in New Issue
Block a user