package-update.bat 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. @echo off
  2. chcp 65001 >nul
  3. setlocal EnableExtensions EnableDelayedExpansion
  4. REM ============================================================
  5. REM 打包 MES 客户端升级 zip(分离模式:EXE + JAR + app.version)
  6. REM 用法:
  7. REM package-update.bat <版本号> <JAR路径> [EXE路径] [输出目录]
  8. REM 示例:
  9. REM package-update.bat 1.0.1 C:\build\MesClient.jar C:\build\MesClient.exe
  10. REM ============================================================
  11. set "VERSION=%~1"
  12. set "JAR_PATH=%~2"
  13. set "EXE_PATH=%~3"
  14. set "OUT_DIR=%~4"
  15. if "%VERSION%"=="" (
  16. echo 用法: package-update.bat ^<版本号^> ^<JAR路径^> [EXE路径] [输出目录]
  17. echo 示例: package-update.bat 1.0.1 .\MesClient.jar .\MesClient.exe
  18. exit /b 1
  19. )
  20. if "%JAR_PATH%"=="" (
  21. echo 错误: 请指定 JAR 路径
  22. exit /b 1
  23. )
  24. if not exist "%JAR_PATH%" (
  25. echo 错误: JAR 不存在: %JAR_PATH%
  26. exit /b 1
  27. )
  28. if "%OUT_DIR%"=="" set "OUT_DIR=%~dp0dist"
  29. if not exist "%OUT_DIR%" mkdir "%OUT_DIR%"
  30. set "STAGE=%OUT_DIR%\stage-%VERSION%"
  31. if exist "%STAGE%" rmdir /S /Q "%STAGE%"
  32. mkdir "%STAGE%"
  33. echo [client-release] 版本: %VERSION%
  34. echo [client-release] 组装目录: %STAGE%
  35. copy /Y "%JAR_PATH%" "%STAGE%\MesClient.jar" >nul
  36. if errorlevel 1 (
  37. echo 错误: 复制 JAR 失败
  38. exit /b 1
  39. )
  40. REM 写入旁路版本文件(自动升级以此为准)
  41. > "%STAGE%\app.version" echo %VERSION%
  42. if not "%EXE_PATH%"=="" (
  43. if exist "%EXE_PATH%" (
  44. copy /Y "%EXE_PATH%" "%STAGE%\MesClient.exe" >nul
  45. echo [client-release] 已包含 EXE
  46. REM 同目录 ini(若存在)
  47. set "INI_PATH=%~dpn3.l4j.ini"
  48. if exist "!INI_PATH!" (
  49. copy /Y "!INI_PATH!" "%STAGE%\MesClient.l4j.ini" >nul
  50. echo [client-release] 已包含 l4j.ini
  51. )
  52. ) else (
  53. echo 警告: EXE 不存在,仅打包 JAR: %EXE_PATH%
  54. )
  55. ) else (
  56. echo [client-release] 未指定 EXE,仅打包 JAR + app.version(壳未变时可用)
  57. )
  58. set "ZIP_PATH=%OUT_DIR%\MesClient-%VERSION%.zip"
  59. if exist "%ZIP_PATH%" del /F /Q "%ZIP_PATH%"
  60. REM 优先使用 tar(Win10+),否则尝试 PowerShell Compress-Archive
  61. where tar >nul 2>&1
  62. if not errorlevel 1 (
  63. pushd "%STAGE%"
  64. tar -a -c -f "%ZIP_PATH%" *
  65. set "TAR_ERR=!errorlevel!"
  66. popd
  67. if not "!TAR_ERR!"=="0" (
  68. echo 错误: tar 打包失败
  69. exit /b 1
  70. )
  71. ) else (
  72. powershell -NoProfile -Command "Compress-Archive -Path '%STAGE%\*' -DestinationPath '%ZIP_PATH%' -Force"
  73. if errorlevel 1 (
  74. echo 错误: Compress-Archive 打包失败
  75. exit /b 1
  76. )
  77. )
  78. REM 生成可上传的 version.json 模板
  79. set "JSON_PATH=%OUT_DIR%\version.json"
  80. (
  81. echo {
  82. echo "version": "%VERSION%",
  83. echo "force": false,
  84. echo "packageUrl": "http://127.0.0.1:8980/client-update/MesClient-%VERSION%.zip",
  85. echo "sha256": "",
  86. echo "notes": "请修改 packageUrl 为实际服务器地址后上传"
  87. echo }
  88. ) > "%JSON_PATH%"
  89. echo.
  90. echo [client-release] 完成
  91. echo zip : %ZIP_PATH%
  92. echo json: %JSON_PATH%
  93. echo.
  94. echo 下一步:
  95. echo 1. 将 zip 与 version.json 上传到服务器 /client-update/
  96. echo 2. 修改 version.json 中的 packageUrl 为实际 IP
  97. echo 3. 日常发版请用 jar2exe「JAR 与 EXE 分离」模式
  98. echo.
  99. exit /b 0