@echo off
:: =============================================================================
:: TeslaConsole - Installation Script
:: =============================================================================
:: Installs the operator console on a control PC. Run as Administrator.
:: Must be run from the package folder produced by build-package.bat:
::
::   TeslaConsole\
::     install.bat        <- this file
::     App\
::       TeslaConsole.exe + dependencies + RedPlanet\ (content)
::
:: The console is .NET Framework 4.8 (framework-dependent) — net48 is in-box on
:: Windows 10/11, so there is no runtime to install.
:: =============================================================================

setlocal

echo ============================================================
echo  TeslaConsole - Installation
echo ============================================================
echo.

set ROOT=%~dp0
set APP_SRC=%ROOT%App
set INSTALL_DIR=C:\Program Files\TeslaConsole
set EXE=%INSTALL_DIR%\TeslaConsole.exe
set DATA_DIR=%ProgramData%\Tesla Console

:: -- Admin check --------------------------------------------------------------
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo ERROR: This script must be run as Administrator.
    pause & exit /b 1
)

:: -- Verify source ------------------------------------------------------------
if not exist "%APP_SRC%\TeslaConsole.exe" (
    echo ERROR: TeslaConsole.exe not found in %APP_SRC%
    echo        Run build-package.bat first, then run install.bat from the package folder.
    pause & exit /b 1
)

:: -- .NET Framework 4.8 check (informational; 528040 = 4.8) --------------------
set NETREL=0
for /f "tokens=3" %%v in ('reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release 2^>nul') do set NETREL=%%v
if %NETREL% LSS 528040 (
    echo WARNING: .NET Framework 4.8 was not detected ^(Release=%NETREL%^).
    echo          It ships in-box with Windows 10/11; install it if the console fails to start.
    echo.
)

:: -- STEP 1: Copy files -------------------------------------------------------
echo [1/4] Installing to %INSTALL_DIR% ...
taskkill /F /IM TeslaConsole.exe >nul 2>&1
if not exist "%INSTALL_DIR%" mkdir "%INSTALL_DIR%"
xcopy /E /I /Y /Q "%APP_SRC%\*" "%INSTALL_DIR%\" >nul
if errorlevel 1 (
    echo ERROR: Failed to copy files to %INSTALL_DIR%.
    pause & exit /b 1
)
echo       Files copied.

:: -- STEP 2: Data directory (site config, mission recordings) -----------------
echo [2/4] Preparing data directory...
if not exist "%DATA_DIR%" mkdir "%DATA_DIR%"
:: Grant the local Users group modify access so a normal operator account can
:: write local.siteconfig / RP Missions when the console is not run elevated.
icacls "%DATA_DIR%" /grant *S-1-5-32-545:(OI)(CI)M /T >nul 2>&1
echo       %DATA_DIR% (Users: modify access)

:: -- STEP 3: Start Menu shortcut ----------------------------------------------
echo [3/4] Creating Start Menu shortcut...
powershell -NoProfile -Command "$s=(New-Object -ComObject WScript.Shell).CreateShortcut([Environment]::GetFolderPath('CommonPrograms')+'\TeslaConsole.lnk'); $s.TargetPath='%EXE%'; $s.WorkingDirectory='%INSTALL_DIR%'; $s.IconLocation='%EXE%,0'; $s.Save()" >nul 2>&1
echo       Shortcut created (Start Menu -^> TeslaConsole).

:: -- STEP 4: Windows Firewall -------------------------------------------------
:: The console receives UDP RQST discovery beacons from unconfigured pods, so it
:: must be allowed to accept inbound traffic. A per-program rule is enough.
echo [4/4] Allowing TeslaConsole through Windows Firewall...
netsh advfirewall firewall delete rule name="TeslaConsole" >nul 2>&1
netsh advfirewall firewall add rule name="TeslaConsole" dir=in action=allow program="%EXE%" enable=yes profile=any >nul
echo       Firewall rule added.

:: -- Done ---------------------------------------------------------------------
echo.
echo ============================================================
echo  Installation Complete
echo ============================================================
echo.
echo  Installed to : %INSTALL_DIR%
echo  Data dir     : %DATA_DIR%
echo  Launch from  : Start Menu -^> TeslaConsole
echo.
pause
