Files
blub-blub/find-godot.ps1
ttipo b490e463b0 Godot 실행 스크립트가 설치 경로를 스스로 찾도록
run.ps1과 test.ps1이 %LOCALAPPDATA%\Programs\Godot 한 곳만 보고 있어서 다른 데
설치하면 "Godot을 찾을 수 없습니다"로 끝났다. find-godot.ps1을 두어 GODOT_BIN
환경 변수 → 알려진 설치 폴더들(바탕화면·다운로드 포함) → PATH 순으로 찾고,
필요한 판(콘솔/일반)을 가려 쓰게 했다. 이름으로 훑기 때문에 버전이 올라가도 잡힌다.

클론 직후에는 .godot이 없어 class_name이 등록되지 않는다. 그 상태로 실행하면
game_state.gd 파싱이 실패해 오토로드가 통째로 죽으므로, 두 스크립트가 먼저
--import를 한 번 돌린다.

세 파일 모두 UTF-8 BOM으로 저장했다. BOM이 없으면 Windows PowerShell 5.1이
cp949로 읽어 한글 메시지가 깨진다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Uze4mF1NAGfFRio77cMFqg
2026-09-01 22:38:56 +09:00

49 lines
1.6 KiB
PowerShell

# Godot 4 실행 파일을 찾는다. 못 찾으면 아무것도 내놓지 않는다.
# .\find-godot.ps1 그냥 실행판 (창이 뜬다)
# .\find-godot.ps1 -Console 콘솔판 (--headless 용, 출력이 보인다)
# 찾는 순서: $env:GODOT_BIN > 아래 폴더들 > PATH 위의 godot
param([switch]$Console)
$dirs = @(
"$env:LOCALAPPDATA\Programs\Godot",
[Environment]::GetFolderPath('Desktop'),
"$env:USERPROFILE\Desktop",
"$env:OneDrive\Desktop",
"$env:USERPROFILE\Downloads",
"$env:ProgramFiles\Godot"
)
$found = $null
if ($env:GODOT_BIN -and (Test-Path $env:GODOT_BIN)) {
$found = $env:GODOT_BIN
}
if (-not $found) {
foreach ($d in $dirs) {
if (-not $d -or -not (Test-Path $d)) { continue }
# 버전이 올라가도 잡히도록 이름으로 훑고, 높은 버전을 먼저 쓴다
$hit = Get-ChildItem -Path $d -Filter "Godot_v4*_win64.exe" -File -ErrorAction SilentlyContinue |
Where-Object { $_.Name -notlike "*_console.exe" } |
Sort-Object Name -Descending | Select-Object -First 1
if ($hit) { $found = $hit.FullName; break }
}
}
if (-not $found) {
$cmd = Get-Command godot -ErrorAction SilentlyContinue
if ($cmd) { $found = $cmd.Source }
}
if (-not $found) { return }
# 찾은 것과 원하는 판이 다르면 짝이 되는 파일로 바꿔 준다
$isConsole = $found -like "*_console.exe"
if ($Console -ne $isConsole) {
if ($Console) { $alt = $found -replace '\.exe$', '_console.exe' }
else { $alt = $found -replace '_console\.exe$', '.exe' }
if (Test-Path $alt) { $found = $alt }
}
return $found