@echo off
setlocal EnableDelayedExpansion
title Riparazione del Sinnek Client

:: ============================================================
::  SINNEK CLIENT - Ripara la sceneggiatura
::  Chiudi l'applicazione, disinstallala, elimina i file residui e reinstallala.
:: ============================================================

:: Colori e intestazione
color 60
cls
echo.
echo  =======================================================
echo    SINNEK CLIENT - Strumento di Riparazione
echo  =======================================================
echo.
echo  Questa procedura riparerà l'installazione di Sinnek Client.
echo  Non chiudere questa finestra finché non hai finito.
echo.
echo  -------------------------------------------------------
echo.

:: --- FASE 1: Chiudi l'applicazione se è aperta ----------
echo  [1/5] Chiusura di Sinnek Client se è in esecuzione...
taskkill /F /IM "Sinnek-Client.exe" >nul 2>&1
timeout /t 2 /nobreak >nul
echo        OK
echo.

:: --- FASE 2: Disinstallare la versione corrente --------------------
echo  [2/5] Disinstallazione della versione corrente in corso...

:: Cerca il programma di disinstallazione nelle solite posizioni di Electron Builder.
set "UNINSTALLER="
set "SEARCH1=%APPDATA%\sinnek-client\Uninstall Sinnek-Client.exe"
set "SEARCH2=%LOCALAPPDATA%\Programs\Sinnek-Client\Uninstall Sinnek-Client.exe"
set "SEARCH4=%PROGRAMFILES(X86)%\Sinnek-Client\Uninstall Sinnek-Client.exe"
set "SEARCH3=%PROGRAMFILES%\Sinnek-Client\Uninstall Sinnek-Client.exe"

if exist "%SEARCH1%" set "UNINSTALLER=%SEARCH1%"
if exist "%SEARCH2%" set "UNINSTALLER=%SEARCH2%"
if exist "%SEARCH3%" set "UNINSTALLER=%SEARCH3%"
if exist "%SEARCH4%" set "UNINSTALLER=%SEARCH4%"

if defined UNINSTALLER (
    "%UNINSTALLER%" /S >nul 2>&1
    timeout /t 5 /nobreak >nul
    echo        OK
) else (
    echo        Non è stato trovato alcun programma di disinstallazione, la pulizia manuale continua...
)
echo.

:: --- FASE 3: Pulizia delle cartelle residue ------------------
echo  [3/5] Pulizia dei file residui...

set "DIRS_TO_CLEAN=%LOCALAPPDATA%\sinnek-client"
set "DIRS_TO_CLEAN2=%LOCALAPPDATA%\Programs\sinnek-client"
set "DIRS_TO_CLEAN3=%APPDATA%\Sinnek-Client"
set "DIRS_TO_CLEAN4=%APPDATA%\sinnek-client"
set "DIRS_TO_CLEAN5=%LOCALAPPDATA%\sinnek-client-updater"

for %%D in (
    "%LOCALAPPDATA%\sinnek-client"
    "%LOCALAPPDATA%\Programs\Sinnek-Client"
    "%APPDATA%\Sinnek-Client"
    "%APPDATA%\sinnek-client"
    "%LOCALAPPDATA%\sinnek-client-updater"
) do (
    if exist %%D (
        rd /s /q %%D >nul 2>&1
    )
)

echo        OK
echo.

:: --- FASE 4: Scarica il programma di installazione pulito ------------------
echo  [4/5] Download dell'ultima versione di Sinnek Client in corso...
echo        (L'operazione potrebbe richiedere alcuni minuti, a seconda della velocità della connessione.)
echo.

set "DOWNLOAD_URL=https://software.sinnek.com/download/Sinnek-Client.exe"
set "INSTALLER=%TEMP%\Sinnek-Client.exe"

:: Rimuovere il download precedente, se presente.
if exist "%INSTALLER%" del /f /q "%INSTALLER%" >nul 2>&1

:: Scarica con la barra di avanzamento
echo  Download del programma di installazione in corso...
bitsadmin /transfer "Sinnek Client Download" /priority FOREGROUND "%DOWNLOAD_URL%" "%INSTALLER%"

if not exist "%INSTALLER%" (
    echo.
    echo  ERRORE: Impossibile scaricare il programma di installazione.
    echo  Verifica la tua connessione internet e riprova.
    echo  Se il problema persiste, contatta l'assistenza.
    echo.
    pause
    exit /b 1
)

echo        Download completato
echo.

:: --- FASE 5: Installare --------------------------------------
echo  [5/5] Installazione di Sinnek Client...
echo        Il programma di installazione si aprirà. Non devi fare nulla; attendi semplicemente che l'applicazione si avvii.
echo.

timeout /t 2 /nobreak >nul
start "" "%INSTALLER%"

echo  =======================================================
echo    Riparazione completata con successo.
echo    Puoi chiudere questa finestra.
echo  =======================================================
echo.
pause
exit /b 0
