@echo off chcp 65001 >nul setlocal echo ======================================== echo NPQS9100 升级工具 echo ======================================== echo. REM 检查并创建 upgrade 目录 if not exist upgrade ( mkdir upgrade echo 【首次使用】已自动创建 upgrade 目录 echo. echo 请将升级文件放入 upgrade 目录: echo - app.asar + app.asar.unpacked\ (前端升级包,必须成套放入) echo - entrance.jar (后端升级包) echo. echo 放置完成后,重新运行本脚本即可升级 echo. pause exit /b 0 ) REM 检查升级文件状态 set "hasFrontendAsar=0" set "hasFrontendUnpacked=0" set "upgradeFrontend=0" set "upgradeBackend=0" set "frontendUpgraded=0" if exist upgrade\app.asar set "hasFrontendAsar=1" if exist upgrade\app.asar.unpacked set "hasFrontendUnpacked=1" if exist upgrade\entrance.jar set "upgradeBackend=1" if %hasFrontendAsar%==1 if %hasFrontendUnpacked%==1 ( set "upgradeFrontend=1" ) if %hasFrontendAsar%==1 if %hasFrontendUnpacked%==0 ( echo 【错误】前端升级包不完整! echo. echo 当前仅检测到:upgrade\app.asar echo 前端升级必须同时提供以下两个内容: echo - upgrade\app.asar echo - upgrade\app.asar.unpacked\ echo. pause exit /b 1 ) if %hasFrontendAsar%==0 if %hasFrontendUnpacked%==1 ( echo 【错误】前端升级包不完整! echo. echo 当前仅检测到:upgrade\app.asar.unpacked\ echo 前端升级必须同时提供以下两个内容: echo - upgrade\app.asar echo - upgrade\app.asar.unpacked\ echo. pause exit /b 1 ) if %upgradeFrontend%==0 if %upgradeBackend%==0 ( echo 【提示】upgrade 目录为空! echo. echo 请将升级文件放入 upgrade 目录: echo - app.asar + app.asar.unpacked\ (前端升级包,必须成套放入) echo - entrance.jar (后端升级包) echo. echo 放置完成后,重新运行本脚本即可升级 echo. pause exit /b 0 ) echo 【检测到升级文件】 if %upgradeFrontend%==1 ( echo - 前端升级: upgrade\app.asar + upgrade\app.asar.unpacked\ ) if %upgradeBackend%==1 ( echo - 后端升级: upgrade\entrance.jar ) echo. echo 【重要提示】 echo 1. 升级前会自动备份当前前后端程序文件 echo 2. 如升级失败可运行 rollback.bat 回滚前后端程序文件 echo 3. 数据库请先使用 Navicat 或其他工具手动导出 SQL 备份 echo. pause echo. echo [1/5] 停止 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/5] 备份当前版本(用于回滚)... if not exist backup mkdir backup REM 备份前端(仅在执行前端升级时) if %upgradeFrontend%==1 ( if exist resources\app.asar ( echo 正在备份前端 app.asar... copy /Y resources\app.asar backup\app.asar >nul 2>&1 if %errorlevel% equ 0 ( echo app.asar 备份完成 ) else ( echo app.asar 备份失败 pause exit /b 1 ) ) 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 备份失败 pause exit /b 1 ) ) ) REM 备份后端(仅在执行后端升级时) if %upgradeBackend%==1 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 后端备份失败 pause exit /b 1 ) ) echo. echo [3/5] 记录版本信息... 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/5] 升级前端... if %upgradeFrontend%==1 ( echo 正在替换 app.asar... copy /Y upgrade\app.asar resources\app.asar >nul 2>&1 if %errorlevel% equ 0 ( echo app.asar 升级完成 ) 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 ) 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 ( copy /Y backup\app.asar resources\app.asar >nul 2>&1 ) 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 ) ) else ( echo 无前端升级包,跳过 ) echo. echo [5/5] 升级后端... if %upgradeBackend%==1 ( 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 ) if %frontendUpgraded%==1 ( if exist backup\app.asar ( copy /Y backup\app.asar resources\app.asar >nul 2>&1 ) 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 ) ) else ( echo 无后端升级包,跳过 ) echo. if not exist logs mkdir logs echo ========================================== >> logs\upgrade.log echo 升级时间: %date% %time% >> logs\upgrade.log if %upgradeFrontend%==1 ( echo 升级内容: 前端 >> logs\upgrade.log ) if %upgradeBackend%==1 ( echo 升级内容: 后端 >> logs\upgrade.log ) echo 数据库处理: 请手动导出/导入 SQL >> logs\upgrade.log echo ========================================== >> logs\upgrade.log echo ======================================== echo 升级完成! echo ======================================== echo. echo 【提示】 echo 1. 如需回滚,请运行 rollback.bat echo 2. 数据库如需恢复,请手动执行之前导出的 SQL echo 3. 升级文件已使用,可删除 upgrade 目录 echo. echo 您现在可以启动 NPQS9100 应用。 echo. pause