@echo off chcp 65001 >nul echo ======================================== echo NPQS9100 升级工具 echo ======================================== echo. REM 检查并创建 upgrade 目录 if not exist upgrade ( mkdir upgrade echo 【首次使用】已自动创建 upgrade 目录 echo. echo 请将升级文件放入 upgrade 目录: echo - app.asar (前端升级包 - 文件) echo - app.asar.unpacked\ (前端升级包 - 文件夹) echo - entrance.jar (后端升级包) echo. echo 放置完成后,重新运行本脚本即可升级 echo. pause exit /b 0 ) REM 检查是否有升级文件 set hasUpgrade=0 if exist upgrade\app.asar set hasUpgrade=1 if exist upgrade\app.asar.unpacked set hasUpgrade=1 if exist upgrade\entrance.jar set hasUpgrade=1 if %hasUpgrade%==0 ( echo 【提示】upgrade 目录为空! echo. echo 请将升级文件放入 upgrade 目录: echo - app.asar (前端升级包 - 文件) echo - app.asar.unpacked\ (前端升级包 - 文件夹) echo - entrance.jar (后端升级包) echo. echo 放置完成后,重新运行本脚本即可升级 echo. pause exit /b 0 ) echo 【检测到升级文件】 if exist upgrade\app.asar echo - 前端升级(asar文件): upgrade\app.asar if exist upgrade\app.asar.unpacked echo - 前端升级(unpacked文件夹): upgrade\app.asar.unpacked\ if exist upgrade\entrance.jar echo - 后端升级: upgrade\entrance.jar echo. echo 【重要提示】 echo 1. 升级前会自动备份当前版本 echo 2. 如升级失败可运行 rollback.bat 回滚 echo 3. 数据库会自动备份到 mysql\data_backup\ echo. pause echo. echo [1/6] 停止 NPQS9100 进程... taskkill /F /IM NPQS9100.exe 2>nul if %errorlevel% equ 0 ( echo NPQS9100 已停止 timeout /t 2 /nobreak >nul ) else ( echo NPQS9100 未运行 ) echo. echo [2/6] 备份当前版本(用于回滚)... if not exist backup mkdir backup REM 备份前端(app.asar 和 app.asar.unpacked) if exist resources\app.asar ( echo 正在备份前端 app.asar... if not exist backup mkdir backup copy /Y resources\app.asar backup\app.asar >nul 2>&1 if %errorlevel% equ 0 ( echo app.asar 备份完成 ) else ( echo app.asar 备份失败 ) ) if exist resources\app.asar.unpacked ( echo 正在备份前端 app.asar.unpacked... if exist backup\app.asar.unpacked ( rmdir /s /q backup\app.asar.unpacked 2>nul ) xcopy resources\app.asar.unpacked backup\app.asar.unpacked\ /E /I /Y /Q >nul 2>&1 if %errorlevel% equ 0 ( echo app.asar.unpacked 备份完成 ) else ( echo app.asar.unpacked 备份失败 ) ) REM 备份后端 if exist resources\extraResources\java\entrance.jar ( echo 正在备份后端... copy /Y resources\extraResources\java\entrance.jar backup\entrance.jar >nul 2>&1 if %errorlevel% equ 0 ( echo 后端备份完成 ) else ( echo 后端备份失败 ) ) REM 备份数据库 if exist mysql\data ( echo 正在备份数据库... if exist mysql\data_backup ( rmdir /s /q mysql\data_backup 2>nul ) xcopy mysql\data mysql\data_backup\ /E /I /Y /Q >nul 2>&1 if %errorlevel% equ 0 ( echo 数据库备份完成 ) else ( echo 数据库备份失败,请手动备份后继续 pause exit /b 1 ) ) echo. echo [3/6] 记录版本信息... if not exist backup\version.txt ( echo 备份时间: %date% %time% > backup\version.txt echo 升级前版本备份 >> backup\version.txt ) else ( echo 上次备份时间: %date% %time% >> backup\version.txt ) echo 版本信息已记录 echo. echo [4/6] 升级前端... set frontendUpgraded=0 REM 升级 app.asar if exist upgrade\app.asar ( echo 正在替换 app.asar... copy /Y upgrade\app.asar resources\app.asar >nul 2>&1 if %errorlevel% equ 0 ( echo app.asar 升级完成 set frontendUpgraded=1 ) else ( echo app.asar 升级失败,正在回滚... if exist backup\app.asar ( copy /Y backup\app.asar resources\app.asar >nul 2>&1 echo 已回滚到升级前版本 ) pause exit /b 1 ) ) REM 升级 app.asar.unpacked if exist upgrade\app.asar.unpacked ( echo 正在替换 app.asar.unpacked... if exist resources\app.asar.unpacked ( rmdir /s /q resources\app.asar.unpacked 2>nul ) xcopy upgrade\app.asar.unpacked resources\app.asar.unpacked\ /E /I /Y /Q >nul 2>&1 if %errorlevel% equ 0 ( echo app.asar.unpacked 升级完成 set frontendUpgraded=1 ) else ( echo app.asar.unpacked 升级失败,正在回滚... if exist backup\app.asar.unpacked ( rmdir /s /q resources\app.asar.unpacked 2>nul xcopy backup\app.asar.unpacked resources\app.asar.unpacked\ /E /I /Y /Q >nul 2>&1 echo 已回滚到升级前版本 ) pause exit /b 1 ) ) if %frontendUpgraded%==0 ( echo 无前端升级包,跳过 ) echo. echo [5/6] 升级后端... if exist upgrade\entrance.jar ( echo 正在替换 JAR 文件... copy /Y upgrade\entrance.jar resources\extraResources\java\entrance.jar >nul 2>&1 if %errorlevel% equ 0 ( echo 后端升级完成 ) else ( echo 后端升级失败,正在回滚... if exist backup\entrance.jar ( copy /Y backup\entrance.jar resources\extraResources\java\entrance.jar >nul 2>&1 echo 已回滚到升级前版本 ) pause exit /b 1 ) ) else ( echo 无后端升级包,跳过 ) echo. echo [6/6] 记录升级日志... if not exist logs mkdir logs echo ========================================== >> logs\upgrade.log echo 升级时间: %date% %time% >> logs\upgrade.log if exist upgrade\dist ( echo 升级内容: 前端 >> logs\upgrade.log ) if exist upgrade\entrance.jar ( echo 升级内容: 后端 >> logs\upgrade.log ) echo ========================================== >> logs\upgrade.log echo 升级日志已记录 echo. echo ======================================== echo 升级完成! echo ======================================== echo. echo 【提示】 echo 1. 如需回滚,请运行 rollback.bat echo 2. 升级文件已使用,可删除 upgrade 目录 echo. echo 您现在可以启动 NPQS9100 应用。 echo. pause