| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- @echo off
- chcp 65001 >nul
- setlocal EnableExtensions EnableDelayedExpansion
- REM ============================================================
- REM 打包 MES 客户端升级 zip(分离模式:EXE + JAR + app.version)
- REM 用法:
- REM package-update.bat <版本号> <JAR路径> [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 ^<版本号^> ^<JAR路径^> [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
|