@echo off
setlocal
net session >nul 2>&1
if %errorlevel% neq 0 (
  powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
  exit /b
)

set "DEST=%LOCALAPPDATA%\ClickStay\Dispenser"
set "EXE=https://totem.clickstay.com.br/downloads/ClickStay.Dispenser.exe"
set "ZIP=https://totem.clickstay.com.br/downloads/drivers-usb-serial.zip"
set "TMP=%TEMP%\ClickStayDrivers"
mkdir "%DEST%" 2>nul
if exist "%TMP%" rmdir /s /q "%TMP%"
mkdir "%TMP%" 2>nul

echo Instalando os drivers do cabo USB-serial...
powershell -NoProfile -ExecutionPolicy Bypass -Command "try { Invoke-WebRequest -UseBasicParsing -Uri '%ZIP%' -OutFile '%TMP%\drivers.zip'; Expand-Archive -Force -Path '%TMP%\drivers.zip' -DestinationPath '%TMP%\drivers'; exit 0 } catch { Write-Host $_.Exception.Message; exit 1 }"
if not errorlevel 1 (
  for /r "%TMP%\drivers" %%I in (*.inf) do pnputil /add-driver "%%I" /install
) else (
  echo Nao foi possivel baixar os drivers. O programa da maquina sera atualizado mesmo assim.
)

echo Atualizando o programa da maquina...
taskkill /F /IM ClickStay.Watchdog.exe >nul 2>&1
taskkill /F /IM ClickStay.Dispenser.exe >nul 2>&1
ping -n 3 127.0.0.1 >nul
powershell -NoProfile -ExecutionPolicy Bypass -Command "try { Invoke-WebRequest -UseBasicParsing -Uri '%EXE%' -OutFile '%DEST%\ClickStay.Dispenser.exe'; exit 0 } catch { Write-Host $_.Exception.Message; exit 1 }"
if errorlevel 1 goto falha
copy /Y "%DEST%\ClickStay.Dispenser.exe" "%DEST%\ClickStay.Watchdog.exe" >nul
start "" "%DEST%\ClickStay.Watchdog.exe" --watch
echo Programa e drivers atualizados. Pode fechar esta janela.
timeout /t 5 /nobreak >nul
exit /b 0
:falha
echo Nao foi possivel baixar o programa. Verifique a internet e abra este arquivo de novo.
pause
exit /b 1
