fix(client): 设备移除逻辑与认证流程优化
- 修改设备移除时的本地清理方法,统一调用 clearLocalAuth - 优化设备数量限制校验逻辑,避免重复计算当前设备- 移除冗余的设备状态检查,简化设备移除流程- 调整 Redis 连接超时与等待时间,提升连接稳定性- 增强 MySQL 数据库连接配置,添加自动重连机制 -优化 Druid 连接池参数,提高数据库连接性能 - 简化客户端认证与数据上报逻辑,提升处理效率 - 移除过期设备状态更新逻辑,减少不必要的数据库操作- 调整慢 SQL 记录阈值,便于及时发现性能问题-优化版本分布与数据类型统计查询逻辑,提高响应速度
This commit is contained in:
@@ -3,86 +3,77 @@ setlocal enabledelayedexpansion
|
||||
|
||||
set APP_ASAR=%~1
|
||||
set UPDATE_FILE=%~2
|
||||
set EXE_PATH=%~3
|
||||
set LOG_FILE=%TEMP%\electron-update.log
|
||||
set JAR_UPDATE=%~3
|
||||
set EXE_PATH=%~4
|
||||
|
||||
echo ======================================== > "%LOG_FILE%"
|
||||
echo Electron App Auto-Update Helper >> "%LOG_FILE%"
|
||||
echo Started: %date% %time% >> "%LOG_FILE%"
|
||||
echo ======================================== >> "%LOG_FILE%"
|
||||
echo. >> "%LOG_FILE%"
|
||||
if not exist "%UPDATE_FILE%" if "%JAR_UPDATE%"=="" exit /b 1
|
||||
if not exist "%UPDATE_FILE%" if not exist "%JAR_UPDATE%" exit /b 1
|
||||
|
||||
if not exist "%UPDATE_FILE%" (
|
||||
echo [ERROR] Update file not found: %UPDATE_FILE% >> "%LOG_FILE%"
|
||||
goto :start_app
|
||||
)
|
||||
|
||||
echo [INFO] Update file found: %UPDATE_FILE% >> "%LOG_FILE%"
|
||||
echo [INFO] Target app.asar: %APP_ASAR% >> "%LOG_FILE%"
|
||||
echo [INFO] Application exe: %EXE_PATH% >> "%LOG_FILE%"
|
||||
echo [INFO] Waiting for application to close... >> "%LOG_FILE%"
|
||||
|
||||
REM 获取应用进程名
|
||||
REM Wait for application to close
|
||||
for /f "tokens=*" %%a in ("%EXE_PATH%") do set EXE_NAME=%%~nxa
|
||||
echo [INFO] Waiting for %EXE_NAME% to close... >> "%LOG_FILE%"
|
||||
|
||||
REM 等待应用进程完全关闭(最多等待10秒)
|
||||
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 (
|
||||
echo [WARN] Application still running after 10 seconds >> "%LOG_FILE%"
|
||||
goto process_closed
|
||||
)
|
||||
if %COUNT% GEQ 20 goto process_closed
|
||||
timeout /t 1 /nobreak >nul
|
||||
goto wait_loop
|
||||
|
||||
:process_closed
|
||||
echo [INFO] Application process closed >> "%LOG_FILE%"
|
||||
timeout /t 1 /nobreak >nul
|
||||
|
||||
echo [INFO] Backing up current app.asar... >> "%LOG_FILE%"
|
||||
if exist "%APP_ASAR%.backup" (
|
||||
del /f /q "%APP_ASAR%.backup" >nul 2>&1
|
||||
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
|
||||
)
|
||||
|
||||
if exist "%APP_ASAR%" (
|
||||
move /y "%APP_ASAR%" "%APP_ASAR%.backup" >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 (
|
||||
echo [WARN] First move attempt failed, retrying... >> "%LOG_FILE%"
|
||||
timeout /t 2 /nobreak >nul
|
||||
move /y "%APP_ASAR%" "%APP_ASAR%.backup" >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [ERROR] Failed to backup app.asar, file is locked >> "%LOG_FILE%"
|
||||
goto :start_app
|
||||
set /a RETRY_COUNT+=1
|
||||
if !RETRY_COUNT! LEQ 5 (
|
||||
timeout /t 2 /nobreak >nul
|
||||
goto :retry_delete
|
||||
)
|
||||
)
|
||||
echo [SUCCESS] Backup completed >> "%LOG_FILE%"
|
||||
)
|
||||
|
||||
echo [INFO] Applying update... >> "%LOG_FILE%"
|
||||
move /y "%UPDATE_FILE%" "%APP_ASAR%" >nul 2>&1
|
||||
|
||||
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 (
|
||||
echo [ERROR] Failed to apply update >> "%LOG_FILE%"
|
||||
if exist "%APP_ASAR%.backup" (
|
||||
echo [INFO] Restoring backup... >> "%LOG_FILE%"
|
||||
move /y "%APP_ASAR%.backup" "%APP_ASAR%" >nul 2>&1
|
||||
set /a INSTALL_RETRY+=1
|
||||
if %INSTALL_RETRY% LEQ 5 (
|
||||
timeout /t 2 /nobreak >nul
|
||||
goto :retry_install
|
||||
)
|
||||
goto :start_app
|
||||
)
|
||||
|
||||
echo [SUCCESS] Update applied successfully! >> "%LOG_FILE%"
|
||||
|
||||
if exist "%UPDATE_FILE%" (
|
||||
del /f /q "%UPDATE_FILE%" >nul 2>&1
|
||||
)
|
||||
if exist "%JAR_UPDATE%" del /f /q "%JAR_UPDATE%" >nul 2>&1
|
||||
|
||||
:start_app
|
||||
echo [INFO] Restarting application... >> "%LOG_FILE%"
|
||||
echo ======================================== >> "%LOG_FILE%"
|
||||
|
||||
start "" "%EXE_PATH%"
|
||||
exit /b 0
|
||||
|
||||
Reference in New Issue
Block a user