# Baut PilotNG.exe (natives WebView2-Fenster) mit PyInstaller.
# Ergebnis: dist\PilotNG\PilotNG.exe + Desktop-Verknuepfung "PilotNG".
$ErrorActionPreference = 'Stop'
$repo = 'C:\Users\Privat\TibiaPilotNG'
$python = Join-Path $repo '.venv\Scripts\python.exe'

& $python -m pip install --disable-pip-version-check --quiet pywebview pyinstaller

$icon = Join-Path $repo 'tools\pilotng.ico'
& $python (Join-Path $repo 'tools\make_icon.py')
if (!(Test-Path $icon)) { throw "Icon wurde nicht erzeugt: $icon" }

# Laufende Instanz + WebView2-Kinder beenden, sonst sind die DLLs gesperrt.
Get-Process PilotNG -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
Get-Process msedgewebview2 -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2

# Alten Ordner wegräumen; bleibt er gesperrt, wird er nur beiseite geschoben.
$dist = Join-Path $repo 'dist\PilotNG'
if (Test-Path $dist) {
    try { Remove-Item $dist -Recurse -Force -ErrorAction Stop }
    catch {
        Rename-Item $dist ('_locked-' + (Get-Date -Format 'yyyyMMdd-HHmmss')) -ErrorAction Stop
        Write-Output 'Hinweis: alter Ordner war gesperrt und wurde beiseite geschoben.'
    }
}
Get-ChildItem (Join-Path $repo 'dist') -Directory -Filter '_locked-*' -EA SilentlyContinue |
    ForEach-Object { Remove-Item $_.FullName -Recurse -Force -EA SilentlyContinue }

Push-Location $repo
try {
    & (Join-Path $repo '.venv\Scripts\pyinstaller.exe') --noconfirm --clean `
        --onedir --windowed --name PilotNG `
        --icon "$icon" `
        --distpath (Join-Path $repo 'dist') `
        --workpath (Join-Path $repo 'build') `
        --specpath (Join-Path $repo 'build') `
        (Join-Path $repo 'webui\desktop.py')
    if ($LASTEXITCODE -ne 0) { throw "PyInstaller fehlgeschlagen ($LASTEXITCODE)" }
} finally { Pop-Location }

$exe = Join-Path $repo 'dist\PilotNG\PilotNG.exe'
if (!(Test-Path $exe)) { throw 'PilotNG.exe wurde nicht erzeugt.' }

# Desktop-Verknuepfung auf die echte EXE
$shell = New-Object -ComObject WScript.Shell
$link = $shell.CreateShortcut("$env:USERPROFILE\Desktop\PilotNG.lnk")
$link.TargetPath = $exe
$link.WorkingDirectory = $repo
$link.IconLocation = (Join-Path $repo 'tools\pilotng.ico')
$link.Description = 'PilotNG starten'
$link.Save()
Write-Output ("EXE: " + $exe)
Write-Output ("Verknuepfung: $env:USERPROFILE\Desktop\PilotNG.lnk")
