Ajoute Installer-Lea.bat (CRLF/ASCII, chcp 65001) au paquet Lea complet : - copie le paquet (python-embed inclus) vers %LOCALAPPDATA%\Lea (per-user, emplacement stable via robocopy, fallback xcopy) ; - cree un raccourci Bureau + un raccourci dans le dossier Demarrage (lancement auto a l'ouverture de session) via WScript.Shell, cibles python-embed\pythonw.exe run_agent_v1.py (pas de console) ; - icone optionnelle si un .ico est present dans le paquet (best-effort, sinon icone par defaut) ; - lance Lea une premiere fois, message de fin clair. Application SYSTRAY -> pas de service Windows (session 0 sans UI) : dossier Demarrage + raccourci, per-user, sans admin/UAC. LISEZMOI.txt du paquet remplacee par LISEZMOI-autonome.txt (le flux install.bat + Python systeme n'existe plus dans ce paquet). build_package_full.sh integre ces deux assets et les valide dans le ZIP. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
153 lines
5.4 KiB
Batchfile
153 lines
5.4 KiB
Batchfile
@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
|