@echo off setlocal enabledelayedexpansion set APP_ASAR=%~1 set UPDATE_FILE=%~2 set JAR_UPDATE=%~3 set EXE_PATH=%~4 set UPDATE_DIR=%~5 if not exist "%UPDATE_FILE%" if "%JAR_UPDATE%"=="" exit /b 1 if not exist "%UPDATE_FILE%" if not exist "%JAR_UPDATE%" exit /b 1 REM Wait for application to close for /f "tokens=*" %%a in ("%EXE_PATH%") do set EXE_NAME=%%~nxa set COUNT=0 :wait_loop tasklist /FI "IMAGENAME eq %EXE_NAME%" 2>nul | find /I "%EXE_NAME%" >nul if errorlevel 1 goto process_closed set /a COUNT+=1 if %COUNT% GEQ 20 goto process_closed timeout /t 1 /nobreak >nul goto wait_loop :process_closed timeout /t 1 /nobreak >nul REM Update ASAR if exist "%UPDATE_FILE%" ( if exist "%APP_ASAR%.backup" del /f /q "%APP_ASAR%.backup" >nul 2>&1 if exist "%APP_ASAR%" move /y "%APP_ASAR%" "%APP_ASAR%.backup" >nul 2>&1 move /y "%UPDATE_FILE%" "%APP_ASAR%" >nul 2>&1 if errorlevel 1 if exist "%APP_ASAR%.backup" move /y "%APP_ASAR%.backup" "%APP_ASAR%" >nul 2>&1 if exist "%UPDATE_FILE%" del /f /q "%UPDATE_FILE%" >nul 2>&1 ) REM Update JAR :update_jar if "%JAR_UPDATE%"=="" goto :start_app if not exist "%JAR_UPDATE%" goto :start_app timeout /t 3 /nobreak >nul for %%I in ("%APP_ASAR%") do set RESOURCES_DIR=%%~dpI for %%F in ("%JAR_UPDATE%") do set JAR_NAME=%%~nF echo %JAR_NAME% | findstr /B /C:"erp_client_sb-" >nul if errorlevel 1 ( for /f "tokens=1-3 delims=/ " %%a in ("%date%") do set TODAY=%%a%%b%%c for /f "tokens=1-3 delims=:." %%a in ("%time%") do set NOW=%%a%%b%%c set JAR_NAME=erp_client_sb-2.4.7-!TODAY!!NOW!.jar ) REM Delete old JAR files for %%F in ("%RESOURCES_DIR%erp_client_sb-*.jar") do ( set RETRY_COUNT=0 :retry_delete del /f /q "%%F" >nul 2>&1 if errorlevel 1 ( set /a RETRY_COUNT+=1 if !RETRY_COUNT! LEQ 5 ( timeout /t 2 /nobreak >nul goto :retry_delete ) ) ) REM Install new JAR file set NEW_JAR_PATH=%RESOURCES_DIR%%JAR_NAME% set INSTALL_RETRY=0 :retry_install move /y "%JAR_UPDATE%" "%NEW_JAR_PATH%" >nul 2>&1 if errorlevel 1 ( set /a INSTALL_RETRY+=1 if %INSTALL_RETRY% LEQ 5 ( timeout /t 2 /nobreak >nul goto :retry_install ) goto :start_app ) if exist "%JAR_UPDATE%" del /f /q "%JAR_UPDATE%" >nul 2>&1 :start_app REM Clean up update directory if exist "%UPDATE_DIR%" ( for %%F in ("%UPDATE_DIR%\*") do del /f /q "%%F" >nul 2>&1 ) start "" "%EXE_PATH%" exit /b 0