@echo off
setlocal enabledelayedexpansion
title RegioBahn.eu - Telemetrie-Client Installation
color 0B

echo ===============================================
echo   RegioBahn.eu  -  Telemetrie-Client
echo   Installation des Fenster-Programms
echo ===============================================
echo.

set "ZIEL=%LOCALAPPDATA%\RegioBahn"
set "APPNAME=RegioBahn Telemetrie"
if not exist "%ZIEL%" mkdir "%ZIEL%"

rem --- 1. Python pruefen / installieren -------------------------------
set "PY="
py -3 --version >nul 2>&1 && set "PY=py -3"
if not defined PY python --version >nul 2>&1 && set "PY=python"

if not defined PY (
  echo Python wird nicht gefunden - es wird jetzt automatisch installiert...
  winget install -e --id Python.Python.3.12 --accept-source-agreements --accept-package-agreements
  if errorlevel 1 (
    echo.
    echo Automatische Installation fehlgeschlagen.
    echo Bitte Python von https://www.python.org/downloads/ installieren
    echo und dabei den Haken "Add python.exe to PATH" setzen.
    pause
    exit /b 1
  )
  set "PY=py -3"
)

rem --- 2. Paket installieren ------------------------------------------
echo.
echo Installiere benoetigtes Paket...
%PY% -m pip install --quiet --upgrade pip
%PY% -m pip install --quiet requests
if errorlevel 1 (
  echo.
  echo Das Paket 'requests' konnte nicht installiert werden.
  echo Bitte Internetverbindung pruefen und erneut versuchen.
  pause
  exit /b 1
)

rem --- 3. Programm herunterladen ---------------------------------------
echo Lade aktuelles Programm herunter...
powershell -NoProfile -Command "Invoke-WebRequest -Uri 'https://regiobahn.eu/RegioBahn-Telemetrie-Client.pyw?v=3.6' -Headers @{'Cache-Control'='no-cache'} -OutFile '%ZIEL%\RegioBahn-Telemetrie-Client.pyw'" >nul 2>&1
if not exist "%ZIEL%\RegioBahn-Telemetrie-Client.pyw" (
  echo Download fehlgeschlagen - bitte Internetverbindung pruefen.
  pause
  exit /b 1
)

rem --- 4. Echte EXE-Datei erstellen -------------------------------------
echo.
echo Erstelle eigenstaendige EXE-Datei (das kann 1-2 Minuten dauern)...
set "EXE=%ZIEL%\RegioBahn-Telemetrie.exe"
%PY% -m pip install --quiet pyinstaller
if not errorlevel 1 (
  pushd "%ZIEL%"
  %PY% -m PyInstaller --noconfirm --clean --onefile --noconsole --name RegioBahn-Telemetrie --distpath "%ZIEL%" --workpath "%ZIEL%\build" --specpath "%ZIEL%\build" "RegioBahn-Telemetrie-Client.pyw" >nul 2>&1
  popd
)
if exist "%EXE%" (
  echo EXE erfolgreich erstellt: %EXE%
) else (
  echo Hinweis: EXE konnte nicht erstellt werden - es wird die Skript-Version verwendet.
)

rem --- 5. Verknuepfungen (Desktop + Startmenue) -------------------------
echo Lege Desktop- und Startmenue-Verknuepfung an...
set "STARTMENU=%APPDATA%\Microsoft\Windows\Start Menu\Programs\RegioBahn"
if not exist "%STARTMENU%" mkdir "%STARTMENU%"
if exist "%EXE%" (
  powershell -NoProfile -Command "$s=(New-Object -ComObject WScript.Shell).CreateShortcut([Environment]::GetFolderPath('Desktop')+'\%APPNAME%.lnk'); $s.TargetPath='%EXE%'; $s.WorkingDirectory='%ZIEL%'; $s.Save(); $s2=(New-Object -ComObject WScript.Shell).CreateShortcut('%STARTMENU%\%APPNAME%.lnk'); $s2.TargetPath='%EXE%'; $s2.WorkingDirectory='%ZIEL%'; $s2.Save()" >nul 2>&1
) else (
  powershell -NoProfile -Command "$w=(Get-Command pythonw.exe -ErrorAction SilentlyContinue).Source; if(-not $w){$w=(Get-Command py.exe).Source}; $s=(New-Object -ComObject WScript.Shell).CreateShortcut([Environment]::GetFolderPath('Desktop')+'\%APPNAME%.lnk'); $s.TargetPath=$w; $s.Arguments='\"%ZIEL%\RegioBahn-Telemetrie-Client.pyw\"'; $s.WorkingDirectory='%ZIEL%'; $s.Save(); $s2=(New-Object -ComObject WScript.Shell).CreateShortcut('%STARTMENU%\%APPNAME%.lnk'); $s2.TargetPath=$w; $s2.Arguments='\"%ZIEL%\RegioBahn-Telemetrie-Client.pyw\"'; $s2.WorkingDirectory='%ZIEL%'; $s2.Save()" >nul 2>&1
)

rem --- 6. Deinstallations-Programm anlegen ------------------------------
echo Lege Deinstallations-Programm an...
(
echo @echo off
echo title %APPNAME% - Deinstallation
echo echo %APPNAME% wird entfernt...
echo taskkill /f /im RegioBahn-Telemetrie.exe ^>nul 2^>^&1
echo reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\RegioBahnTelemetrie" /f ^>nul 2^>^&1
echo del "%USERPROFILE%\Desktop\%APPNAME%.lnk" ^>nul 2^>^&1
echo rd /s /q "%APPDATA%\Microsoft\Windows\Start Menu\Programs\RegioBahn" ^>nul 2^>^&1
echo cd /d "%TEMP%"
echo start "" /min cmd /c "ping 127.0.0.1 -n 3 ^>nul ^& rd /s /q \"%ZIEL%\""
echo echo Fertig - %APPNAME% wurde deinstalliert.
echo timeout /t 4 ^>nul
) > "%ZIEL%\Deinstallieren.bat"

rem --- 7. Eintrag in "Programme und Features" (Deinstallation) ----------
echo Trage Deinstallation in die Windows-Programmliste ein...
set "REGKEY=HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\RegioBahnTelemetrie"
if exist "%EXE%" (set "ICON=%EXE%") else (set "ICON=%ZIEL%\RegioBahn-Telemetrie-Client.pyw")
reg add "%REGKEY%" /v DisplayName /t REG_SZ /d "%APPNAME% (RegioBahn.eu)" /f >nul
reg add "%REGKEY%" /v DisplayVersion /d "3.6" /f >nul
reg add "%REGKEY%" /v Publisher /t REG_SZ /d "RegioBahn.eu" /f >nul
reg add "%REGKEY%" /v InstallLocation /t REG_SZ /d "%ZIEL%" /f >nul
reg add "%REGKEY%" /v DisplayIcon /t REG_SZ /d "%ICON%" /f >nul
reg add "%REGKEY%" /v UninstallString /t REG_SZ /d "\"%ZIEL%\Deinstallieren.bat\"" /f >nul
reg add "%REGKEY%" /v URLInfoAbout /t REG_SZ /d "https://regiobahn.eu/telemetrie" /f >nul
reg add "%REGKEY%" /v NoModify /t REG_DWORD /d 1 /f >nul
reg add "%REGKEY%" /v NoRepair /t REG_DWORD /d 1 /f >nul

rem --- 8. Programm starten ----------------------------------------------
echo.
echo Fertig! Das Programm wird jetzt geoeffnet.
echo Ab sofort reicht ein Doppelklick auf "%APPNAME%" auf dem Desktop.
echo Deinstallieren kannst du es jederzeit ueber:
echo   Einstellungen ^> Apps ^> %APPNAME% (RegioBahn.eu)
if exist "%EXE%" (
  start "" "%EXE%"
) else (
  start "" pythonw "%ZIEL%\RegioBahn-Telemetrie-Client.pyw"
)
timeout /t 4 >nul
