@echo off
rem Startet den Dev-Modus mit Administratorrechten (ein UAC-Prompt erscheint).
rem Noetig, weil Genshin erhoeht laeuft: Windows (UIPI) verwirft sonst alle
rem simulierten Maus-Eingaben an das Spiel - SendInput meldet trotzdem Erfolg.
rem Der Punkt hinter %~dp0 verhindert, dass der abschliessende Backslash das
rem schliessende Anfuehrungszeichen escaped.
rem -NoExit haelt das erhoehte (innere) Fenster offen, selbst wenn das Skript
rem einen Fehler wirft oder npm run dev sofort wieder beendet.
rem
rem Dieses AEUSSERE Fenster (das du beim Doppelklick oder ueber
rem "npm run dev:admin" siehst) schloss sich frueher sofort, sobald
rem Start-Process zurueckkehrte - auch wenn UAC abgelehnt wurde oder die
rem Elevation ganz fehlschlug, ohne dass davon irgendetwas sichtbar war.
rem try/catch + timeout zeigen jetzt den Fehler und halten das Fenster kurz offen.
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -Command "$script='%~dp0scripts\dev-admin-start.ps1'; $project='%~dp0.'; try { Start-Process powershell -ArgumentList @('-NoProfile','-ExecutionPolicy','Bypass','-NoExit','-File',$script,'-ProjectRoot',$project) -Verb RunAs -ErrorAction Stop; Write-Host ''; Write-Host 'UAC-Abfrage gestartet. Bitte bestaetigen - danach oeffnet sich ein neues Administrator-Fenster mit npm run dev.' -ForegroundColor Green } catch { Write-Host ''; Write-Host 'Admin-Start fehlgeschlagen oder UAC-Abfrage abgelehnt:' -ForegroundColor Red; Write-Host $_.Exception.Message -ForegroundColor Red }"
echo.
echo Dieses Fenster kannst du jetzt schliessen (Taste druecken oder 15s warten). Das eigentliche Programm laeuft im neuen Administrator-Fenster.
rem timeout statt pause/choice: pause und choice warten unter umgeleiteter
rem Standardeingabe (z.B. beim Testen ueber ein Skript) fuer immer, weil sie
rem auf ein echtes Konsolen-Handle angewiesen sind. timeout erkennt eine
rem umgeleitete Eingabe explizit und bricht sofort ab statt zu haengen, waehrend
rem es bei einem echten Doppelklick normal 15s wartet oder bei Tastendruck endet.
timeout /t 15 >nul 2>&1
