@echo off
setlocal EnableDelayedExpansion
title Réparation du Sinnek Client

:: ============================================================
::  SINNEK CLIENT - Script de réparation
::  Fermez l'application, désinstallez-la, supprimez les fichiers résiduels et réinstallez-la.
:: ============================================================

:: Couleurs et en-tête
color 60
cls
echo.
echo  =======================================================
echo    SINNEK CLIENT - Outil de réparation
echo  =======================================================
echo.
echo  Ce processus réparera votre installation du client Sinnek.
echo  Veuillez ne pas fermer cette fenêtre avant d'avoir terminé.
echo.
echo  -------------------------------------------------------
echo.

:: --- ÉTAPE 1 : Fermez l'application si elle est ouverte. ----------
echo  [1/5] Fermeture du Sinnek Client s'il est en cours d'exécution...
taskkill /F /IM "Sinnek-Client.exe" >nul 2>&1
timeout /t 2 /nobreak >nul
echo        OK
echo.

:: --- ÉTAPE 2 : Désinstaller la version actuelle --------------------
echo  [2/5] Désinstallation de la version actuelle...

:: Recherchez le programme de désinstallation dans les emplacements habituels d'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        Aucun programme de désinstallation n'a été trouvé, le nettoyage manuel se poursuit...
)
echo.

:: --- ÉTAPE 3 : Nettoyer les dossiers résiduels ------------------
echo  [3/5] Nettoyage des fichiers résiduels...

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.

:: --- ÉTAPE 4 : Télécharger le programme d’installation propre ------------------
echo  [4/5] Téléchargement de la dernière version du client Sinnek...
echo        (Cela peut prendre quelques minutes en fonction de votre connexion.)
echo.

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

:: Elimina descarga previa si existe
if exist "%INSTALLER%" del /f /q "%INSTALLER%" >nul 2>&1

:: Télécharger avec barre de progression
echo  Téléchargement du programme d'installation...
bitsadmin /transfer "Sinnek Client Download" /priority FOREGROUND "%DOWNLOAD_URL%" "%INSTALLER%"

if not exist "%INSTALLER%" (
    echo.
    echo  ERREUR : Impossible de télécharger le programme d'installation.
    echo  Vérifiez votre connexion internet et réessayez.
    echo  Si le problème persiste, contactez l'assistance.
    echo.
    pause
    exit /b 1
)

echo        Téléchargement terminé
echo.

:: --- ÉTAPE 5 : Installation --------------------------------------
echo  [5/5] Installation du client Sinnek...
echo        Le programme d'installation va s'ouvrir. Vous n'avez rien à faire ; attendez simplement que l'application s'ouvre.
echo.

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

echo  =======================================================
echo    Réparation terminée avec succès.
echo    Vous pouvez fermer cette fenêtre.
echo  =======================================================
echo.
pause
exit /b 0
