@echo off chcp 65001 >nul setlocal EnableExtensions EnableDelayedExpansion REM ============================================================ REM 打包 MES 客户端升级 zip(分离模式:EXE + JAR + app.version) REM 用法: REM package-update.bat <版本号> [EXE路径] [输出目录] REM 示例: REM package-update.bat 1.0.1 C:\build\MesClient.jar C:\build\MesClient.exe REM ============================================================ set "VERSION=%~1" set "JAR_PATH=%~2" set "EXE_PATH=%~3" set "OUT_DIR=%~4" if "%VERSION%"=="" ( echo 用法: package-update.bat ^<版本号^> ^ [EXE路径] [输出目录] echo 示例: package-update.bat 1.0.1 .\MesClient.jar .\MesClient.exe exit /b 1 ) if "%JAR_PATH%"=="" ( echo 错误: 请指定 JAR 路径 exit /b 1 ) if not exist "%JAR_PATH%" ( echo 错误: JAR 不存在: %JAR_PATH% exit /b 1 ) if "%OUT_DIR%"=="" set "OUT_DIR=%~dp0dist" if not exist "%OUT_DIR%" mkdir "%OUT_DIR%" set "STAGE=%OUT_DIR%\stage-%VERSION%" if exist "%STAGE%" rmdir /S /Q "%STAGE%" mkdir "%STAGE%" echo [client-release] 版本: %VERSION% echo [client-release] 组装目录: %STAGE% copy /Y "%JAR_PATH%" "%STAGE%\MesClient.jar" >nul if errorlevel 1 ( echo 错误: 复制 JAR 失败 exit /b 1 ) REM 写入旁路版本文件(自动升级以此为准) > "%STAGE%\app.version" echo %VERSION% if not "%EXE_PATH%"=="" ( if exist "%EXE_PATH%" ( copy /Y "%EXE_PATH%" "%STAGE%\MesClient.exe" >nul echo [client-release] 已包含 EXE REM 同目录 ini(若存在) set "INI_PATH=%~dpn3.l4j.ini" if exist "!INI_PATH!" ( copy /Y "!INI_PATH!" "%STAGE%\MesClient.l4j.ini" >nul echo [client-release] 已包含 l4j.ini ) ) else ( echo 警告: EXE 不存在,仅打包 JAR: %EXE_PATH% ) ) else ( echo [client-release] 未指定 EXE,仅打包 JAR + app.version(壳未变时可用) ) set "ZIP_PATH=%OUT_DIR%\MesClient-%VERSION%.zip" if exist "%ZIP_PATH%" del /F /Q "%ZIP_PATH%" REM 优先使用 tar(Win10+),否则尝试 PowerShell Compress-Archive where tar >nul 2>&1 if not errorlevel 1 ( pushd "%STAGE%" tar -a -c -f "%ZIP_PATH%" * set "TAR_ERR=!errorlevel!" popd if not "!TAR_ERR!"=="0" ( echo 错误: tar 打包失败 exit /b 1 ) ) else ( powershell -NoProfile -Command "Compress-Archive -Path '%STAGE%\*' -DestinationPath '%ZIP_PATH%' -Force" if errorlevel 1 ( echo 错误: Compress-Archive 打包失败 exit /b 1 ) ) REM 生成可上传的 version.json 模板 set "JSON_PATH=%OUT_DIR%\version.json" ( echo { echo "version": "%VERSION%", echo "force": false, echo "packageUrl": "http://127.0.0.1:8980/client-update/MesClient-%VERSION%.zip", echo "sha256": "", echo "notes": "请修改 packageUrl 为实际服务器地址后上传" echo } ) > "%JSON_PATH%" echo. echo [client-release] 完成 echo zip : %ZIP_PATH% echo json: %JSON_PATH% echo. echo 下一步: echo 1. 将 zip 与 version.json 上传到服务器 /client-update/ echo 2. 修改 version.json 中的 packageUrl 为实际 IP echo 3. 日常发版请用 jar2exe「JAR 与 EXE 分离」模式 echo. exit /b 0