@echo off chcp 65001 >nul 2>&1 title Lea - Installation 1-clic setlocal EnableDelayedExpansion :: ============================================================ :: Installer-Lea.bat - Installation 1-clic per-user (sans admin) :: ------------------------------------------------------------ :: - Copie le paquet Lea (y compris python-embed) vers :: %LOCALAPPDATA%\Lea (emplacement stable per-user). :: - Cree un raccourci sur le Bureau. :: - Cree un raccourci dans le dossier Demarrage (lancement :: automatique a chaque ouverture de session Windows). :: - Lance Lea une premiere fois (pythonw, sans console). :: :: Aucun droit administrateur requis. Aucun service Windows :: (Lea est une application systray, doit tourner dans la :: session utilisateur). :: ============================================================ echo. echo ============================================================ echo Lea - Installation echo ============================================================ echo. :: --- Emplacement source (dossier de ce script) ------------- set "SRC=%~dp0" :: Retirer l'antislash final eventuel if "%SRC:~-1%"=="\" set "SRC=%SRC:~0,-1%" :: --- Emplacement cible per-user ---------------------------- set "DEST=%LOCALAPPDATA%\Lea" echo Installation vers : %DEST% echo (copie du runtime embarque, cela prend quelques secondes) echo. :: --- Verification du runtime embarque dans la source ------- if not exist "%SRC%\python-embed\pythonw.exe" ( echo ERREUR : python-embed\pythonw.exe introuvable dans le paquet. echo Le paquet semble incomplet. Re-telechargez Lea depuis le tableau de bord. echo. pause exit /b 1 ) :: --- Si Lea tourne deja depuis la cible, l'arreter ---------- if exist "%DEST%\lea_agent.lock" ( for /f "usebackq tokens=* delims=" %%i in ("%DEST%\lea_agent.lock") do ( taskkill /F /PID %%i >nul 2>&1 ) del /f /q "%DEST%\lea_agent.lock" >nul 2>&1 timeout /t 1 >nul ) :: --- Copie du paquet vers la cible ------------------------- :: robocopy : robuste pour la grosse arborescence python-embed. :: /E sous-dossiers (vides inclus), /NFL /NDL /NJH /NJS /NP silencieux. :: Codes de sortie robocopy < 8 = succes ; >= 8 = echec. if not exist "%DEST%" mkdir "%DEST%" >nul 2>&1 robocopy "%SRC%" "%DEST%" /E /NFL /NDL /NJH /NJS /NP >nul if %ERRORLEVEL% GEQ 8 ( echo robocopy a echoue, tentative avec xcopy... xcopy "%SRC%\*" "%DEST%\" /E /I /H /Y >nul if errorlevel 1 ( echo. echo ERREUR : la copie vers %DEST% a echoue. echo Verifiez l'espace disque et les droits sur votre profil. echo. pause exit /b 1 ) ) echo Copie terminee - OK echo. :: --- Ne pas laisser l'installeur se relancer en boucle ----- :: (on supprime la copie de l'installeur dans la cible : inutile une fois installe) del /f /q "%DEST%\Installer-Lea.bat" >nul 2>&1 :: --- Detection d'une icone optionnelle --------------------- :: Cherche un .ico dans le paquet installe (best-effort). set "ICON=" for /f "delims=" %%f in ('dir /b /s "%DEST%\*.ico" 2^>nul') do ( if not defined ICON set "ICON=%%f" ) :: --- Cibles des raccourcis --------------------------------- set "TARGET=%DEST%\python-embed\pythonw.exe" set "ARGS=run_agent_v1.py" set "WORKDIR=%DEST%" set "DESKTOP_LNK=%USERPROFILE%\Desktop\Lea.lnk" set "STARTUP_LNK=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\Lea.lnk" :: --- Creation des raccourcis via PowerShell (WScript.Shell) - echo Creation des raccourcis (Bureau + Demarrage automatique)... powershell -NoProfile -ExecutionPolicy Bypass -Command ^ "$ws = New-Object -ComObject WScript.Shell;" ^ "foreach ($p in @('%DESKTOP_LNK%','%STARTUP_LNK%')) {" ^ " $dir = Split-Path $p -Parent;" ^ " if (-not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null }" ^ " $s = $ws.CreateShortcut($p);" ^ " $s.TargetPath = '%TARGET%';" ^ " $s.Arguments = '%ARGS%';" ^ " $s.WorkingDirectory = '%WORKDIR%';" ^ " $s.Description = 'Lea - Assistante IA';" ^ " if ('%ICON%' -ne '' -and (Test-Path '%ICON%')) { $s.IconLocation = '%ICON%' }" ^ " $s.Save();" ^ "}" if errorlevel 1 ( echo ATTENTION : la creation des raccourcis a partiellement echoue. echo Vous pourrez tout de meme lancer Lea via %TARGET%. ) else ( echo Raccourcis crees - OK ) echo. :: --- Premier lancement de Lea (sans console) --------------- echo Demarrage de Lea... pushd "%DEST%" start "" /b "%TARGET%" %ARGS% popd :: --- Verification rapide (via le lock PID) ----------------- timeout /t 3 >nul set "LEA_ALIVE=0" if exist "%DEST%\lea_agent.lock" ( for /f "usebackq tokens=* delims=" %%i in ("%DEST%\lea_agent.lock") do ( tasklist /FI "PID eq %%i" /NH 2>nul | findstr /I "pythonw" >nul && set "LEA_ALIVE=1" ) ) echo. echo ============================================================ if "%LEA_ALIVE%"=="1" ( echo Lea est installee et demarree ! ) else ( echo Lea est installee. ) echo ============================================================ echo. echo - Lea apparait en bas a droite, dans la barre des taches echo (petite icone ronde, a cote de l'horloge). echo - Lea demarrera AUTOMATIQUEMENT a chaque ouverture de session. echo - Un raccourci "Lea" a ete ajoute sur votre Bureau. echo. echo Vous pouvez fermer cette fenetre. echo. pause endlocal exit /b 0