@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