Files
ssh-manager/scripts/release/check-windows-release.bat
2026-04-16 23:28:26 +08:00

150 lines
3.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
setlocal
set "ROOT=%~dp0..\.."
for %%I in ("%ROOT%") do set "ROOT=%%~fI"
set "VERSION_SCRIPT=%ROOT%\scripts\release\get-app-version.ps1"
set "JRE_DIR=%SSH_MANAGER_WINDOWS_JRE_DIR%"
cd /d "%ROOT%"
where powershell >nul 2>nul
if errorlevel 1 (
echo [ERROR] 未检测到 PowerShell无法解析版本号
pause
exit /b 1
)
for /f "usebackq delims=" %%V in (`powershell -NoProfile -ExecutionPolicy Bypass -File "%VERSION_SCRIPT%"`) do set "APP_VERSION=%%V"
if not defined APP_VERSION (
echo [ERROR] 无法从 backend\pom.xml 读取版本号
pause
exit /b 1
)
echo [INFO] 当前发布版本: %APP_VERSION%
where npm >nul 2>nul
if errorlevel 1 (
echo [ERROR] 未检测到 npm请先安装 Node.js 18+
pause
exit /b 1
)
where mvn >nul 2>nul
if errorlevel 1 (
echo [ERROR] 未检测到 Maven请先安装 Maven 3.6+
pause
exit /b 1
)
if not defined JRE_DIR (
echo [ERROR] 请先设置环境变量 SSH_MANAGER_WINDOWS_JRE_DIR指向已解压的 Windows JRE 目录
pause
exit /b 1
)
if not exist "%JRE_DIR%\bin\javaw.exe" (
echo [ERROR] %JRE_DIR% 不是有效的 Windows JRE 目录,缺少 bin\javaw.exe
pause
exit /b 1
)
if not exist "%ROOT%\scripts\installer\ssh-manager.iss" (
echo [ERROR] 缺少安装器脚本 scripts\installer\ssh-manager.iss
pause
exit /b 1
)
if not exist "%ROOT%\scripts\installer\assets\ssh-manager.ico" (
echo [ERROR] 缺少安装器图标 scripts\installer\assets\ssh-manager.ico
pause
exit /b 1
)
if not exist "%ROOT%\docs\windows-buyer-guide.md" (
echo [ERROR] 缺少 docs\windows-buyer-guide.md
pause
exit /b 1
)
if not exist "%ROOT%\docs\windows-after-sales-faq.md" (
echo [ERROR] 缺少 docs\windows-after-sales-faq.md
pause
exit /b 1
)
where ISCC.exe >nul 2>nul
if errorlevel 1 (
echo [WARN] 未检测到 ISCC.exe本次只能验证构建链路暂时无法生成 Setup.exe
) else (
echo [INFO] 已检测到 Inno Setup 编译器 ISCC.exe
)
echo [1/4] 构建前端...
cd /d "%ROOT%\frontend"
call npm run build
if errorlevel 1 (
echo [ERROR] 前端构建失败
pause
exit /b 1
)
if not exist "%ROOT%\frontend\dist\index.html" (
echo [ERROR] 前端 dist 产物不完整,缺少 frontend\dist\index.html
pause
exit /b 1
)
echo [2/4] 打包后端(内嵌前端静态资源)...
cd /d "%ROOT%\backend"
call mvn -Pembed-frontend-dist -DskipTests package
if errorlevel 1 (
echo [ERROR] 后端打包失败
pause
exit /b 1
)
dir /b "%ROOT%\backend\target\*.jar" >nul 2>nul
if errorlevel 1 (
echo [ERROR] 后端产物不完整,未找到 target\*.jar
pause
exit /b 1
)
echo [3/4] 检查安装器输入文件...
if not exist "%ROOT%\scripts\windows\start-installed.ps1" (
echo [ERROR] 缺少 scripts\windows\start-installed.ps1
pause
exit /b 1
)
if not exist "%ROOT%\scripts\windows\start-installed.cmd" (
echo [ERROR] 缺少 scripts\windows\start-installed.cmd
pause
exit /b 1
)
if not exist "%ROOT%\scripts\windows\start-installed.vbs" (
echo [ERROR] 缺少 scripts\windows\start-installed.vbs
pause
exit /b 1
)
if not exist "%ROOT%\scripts\windows\stop-installed.ps1" (
echo [ERROR] 缺少 scripts\windows\stop-installed.ps1
pause
exit /b 1
)
if not exist "%ROOT%\scripts\windows\stop-installed.cmd" (
echo [ERROR] 缺少 scripts\windows\stop-installed.cmd
pause
exit /b 1
)
echo [4/4] 发布预检完成
echo [OK] Windows 发布预检通过
echo [OK] 版本号: %APP_VERSION%
echo [OK] 下一步执行:
echo scripts\release\build-windows-installer.bat
pause
endlocal