Files
pqs-9100_client/build/upgrade.bat

254 lines
7.5 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@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