@echo off REM ============================================================ REM 在 Windows 上把 Parking Simulator 打包成绿色免安装目录。 REM 产物:dist\win\ParkingSimulator\ParkingSimulator.exe REM REM 依赖: REM - JDK 25 (含 jlink / jpackage) REM - Maven 3.9+ REM REM jpackage --type app-image 不需要 WiX;如需 .msi/.exe 安装包 REM 把脚本末尾的注释段取消即可(需要先安装 WiX 3.x)。 REM ============================================================ setlocal EnableExtensions EnableDelayedExpansion cd /d "%~dp0\.." set APP_NAME=ParkingSimulator set APP_VERSION=1.0.0 set APP_VENDOR=Fujica set MAIN_MODULE=com.fujica.parkingtool set MAIN_CLASS=com.fujica.parkingtool.App set OUT_DIR=dist\win set RUNTIME_DIR=target\runtime-win set MODULE_PATH=target\modules set RUNTIME_MODULES=%MAIN_MODULE%,javafx.base,javafx.graphics,javafx.controls,jdk.localedata,jdk.crypto.ec,jdk.crypto.cryptoki where mvn >nul 2>nul || (echo [ERR] 找不到 mvn & exit /b 1) where jlink >nul 2>nul || (echo [ERR] 找不到 jlink & exit /b 1) where jpackage >nul 2>nul || (echo [ERR] 找不到 jpackage & exit /b 1) echo ==^> [1/4] Maven 构建 + 拉取依赖到 target\modules call mvn -q -DskipTests clean package || exit /b 1 echo ==^> [2/4] jlink 生成最小运行时 -> %RUNTIME_DIR% if exist "%RUNTIME_DIR%" rmdir /s /q "%RUNTIME_DIR%" jlink ^ --module-path "%JAVA_HOME%\jmods;%MODULE_PATH%" ^ --add-modules %RUNTIME_MODULES% ^ --no-header-files ^ --no-man-pages ^ --strip-debug ^ --strip-native-commands ^ --compress=zip-9 ^ --output "%RUNTIME_DIR%" || exit /b 1 echo ==^> [3/4] jpackage 生成绿色目录 -> %OUT_DIR% if exist "%OUT_DIR%" rmdir /s /q "%OUT_DIR%" mkdir "%OUT_DIR%" set ICON_ARG= if exist "src\main\resources\com\fujica\parkingtool\icon.ico" ( set ICON_ARG=--icon src\main\resources\com\fujica\parkingtool\icon.ico ) jpackage ^ --type app-image ^ --name %APP_NAME% ^ --app-version %APP_VERSION% ^ --vendor "%APP_VENDOR%" ^ --module-path "%MODULE_PATH%" ^ --module "%MAIN_MODULE%/%MAIN_CLASS%" ^ --runtime-image "%RUNTIME_DIR%" ^ --dest "%OUT_DIR%" ^ --java-options "-Xms32m" ^ --java-options "-Xmx256m" ^ --java-options "-XX:+UseSerialGC" ^ --java-options "-Dprism.lcdtext=false" ^ %ICON_ARG% || exit /b 1 echo ==^> [4/4] 完成 echo [OK] 产物:%OUT_DIR%\%APP_NAME%\%APP_NAME%.exe echo 整个 %OUT_DIR%\%APP_NAME% 文件夹可拷贝到任意 Windows 机器上双击运行。 REM === 可选:打包 .msi 安装程序(需要预装 WiX 3.x) === REM jpackage ^ REM --type msi ^ REM --name %APP_NAME% ^ REM --app-version %APP_VERSION% ^ REM --vendor "%APP_VENDOR%" ^ REM --module-path "%MODULE_PATH%" ^ REM --module "%MAIN_MODULE%/%MAIN_CLASS%" ^ REM --runtime-image "%RUNTIME_DIR%" ^ REM --dest "%OUT_DIR%" ^ REM --win-dir-chooser --win-shortcut --win-menu ^ REM %ICON_ARG% endlocal