Files
Ant-Browser/bat/publish.bat
T
Ant Browser Release Bot 6f58a6c19a publish: 1.0.0 snapshot (bad2ec1)
channel: master
version: 1.0.0
source-ref: master
published-at-utc: 2026-03-13T15:19:28Z
2026-03-13 23:19:29 +08:00

249 lines
6.2 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
chcp 65001 >nul
setlocal enabledelayedexpansion
REM 切换到项目根目录(脚本所在目录的上一级)
cd /d "%~dp0.."
echo ========================================
echo Ant Browser - 发布打包脚本
echo ========================================
echo.
echo 当前工作目录: %CD%
echo.
REM ======== [1/6] 检测 NSIS ========
echo [1/6] 检测 NSIS 安装...
echo 支持环境变量:MAKENSIS_PATH / NSIS_PATH / NSIS_HOME
echo.
set "MAKENSIS="
REM 优先级 1MAKENSIS_PATH 直接指向 makensis.exe
if defined MAKENSIS_PATH (
if exist "!MAKENSIS_PATH!" (
set "MAKENSIS=!MAKENSIS_PATH!"
goto :nsis_found
)
)
REM 优先级 2NSIS_PATH 可以是 makensis.exe 或 NSIS 目录
if defined NSIS_PATH (
if exist "!NSIS_PATH!\makensis.exe" (
set "MAKENSIS=!NSIS_PATH!\makensis.exe"
goto :nsis_found
)
if exist "!NSIS_PATH!" (
set "MAKENSIS=!NSIS_PATH!"
goto :nsis_found
)
)
REM 优先级 3NSIS_HOME 为 NSIS 安装根目录
if defined NSIS_HOME (
if exist "!NSIS_HOME!\makensis.exe" (
set "MAKENSIS=!NSIS_HOME!\makensis.exe"
goto :nsis_found
)
)
REM 优先级 4:系统 PATH
for /f "delims=" %%i in ('where makensis.exe 2^>nul') do (
set "MAKENSIS=%%i"
goto :nsis_found
)
REM 优先级 5:常见安装目录
if exist "C:\Program Files (x86)\NSIS\makensis.exe" (
set "MAKENSIS=C:\Program Files (x86)\NSIS\makensis.exe"
goto :nsis_found
)
if exist "C:\Program Files\NSIS\makensis.exe" (
set "MAKENSIS=C:\Program Files\NSIS\makensis.exe"
goto :nsis_found
)
echo ✗ 未找到 NSISmakensis.exe
echo.
echo 请安装 NSIS 后,通过以下任一方式配置(PowerShell):
echo setx MAKENSIS_PATH "D:\tools\NSIS\makensis.exe"
echo setx NSIS_PATH "D:\tools\NSIS"
echo setx NSIS_HOME "D:\tools\NSIS"
echo.
echo 或下载安装:https://nsis.sourceforge.io/Download
echo.
pause
exit /b 1
:nsis_found
echo ✓ NSIS 已就绪: !MAKENSIS!
echo.
REM ======== [2/6] 读取版本号 ========
echo [2/6] 读取版本号...
set "VERSION="
for /f "usebackq delims=" %%v in (`powershell -NoProfile -Command "(Get-Content wails.json | ConvertFrom-Json).info.productVersion"`) do (
set "VERSION=%%v"
)
if "!VERSION!"=="" (
echo ✗ 无法从 wails.json 读取版本号
pause
exit /b 1
)
echo ✓ 版本号: !VERSION!
echo.
REM ======== [3/6] Wails 构建 ========
echo [3/6] 执行 Wails 构建...
set GOPROXY=https://goproxy.cn,direct
wails build
if %errorlevel% neq 0 (
echo ✗ Wails 构建失败
pause
exit /b 1
)
if not exist "build\bin\ant-chrome.exe" (
echo ✗ 构建产物不存在: build\bin\ant-chrome.exe
pause
exit /b 1
)
echo ✓ 构建成功: build\bin\ant-chrome.exe
echo.
REM ======== [4/6] 组装 staging 目录 ========
echo [4/6] 组装 staging 目录...
set "STAGING=publish\staging"
set "RELEASE_CONFIG=publish\config.init.yaml"
if exist "!STAGING!" rmdir /S /Q "!STAGING!"
mkdir "!STAGING!"
copy /Y "build\bin\ant-chrome.exe" "!STAGING!\ant-chrome.exe" >nul
if errorlevel 1 (
echo ✗ 复制 ant-chrome.exe 失败
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
if not exist "!STAGING!\ant-chrome.exe" (
echo ✗ staging 中缺少 ant-chrome.exe
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
echo ✓ 复制 ant-chrome.exe
if not exist "!RELEASE_CONFIG!" (
echo ✗ 未找到发布配置模板: !RELEASE_CONFIG!
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
copy /Y "!RELEASE_CONFIG!" "!STAGING!\config.yaml" >nul
if errorlevel 1 (
echo ✗ 复制发布配置模板失败: !RELEASE_CONFIG!
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
if not exist "!STAGING!\config.yaml" (
echo ✗ staging 中缺少 config.yaml(来源: !RELEASE_CONFIG!
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
echo ✓ 复制发布配置模板 !RELEASE_CONFIG! -> config.yaml
if not exist "bin" (
echo ✗ bin\ 目录不存在,缺少代理运行时文件
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
if not exist "bin\xray.exe" (
echo ✗ 缺少运行时文件: bin\xray.exe
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
if not exist "bin\sing-box.exe" (
echo ✗ 缺少运行时文件: bin\sing-box.exe
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
xcopy /E /I /Y bin "!STAGING!\bin" >nul
if not exist "!STAGING!\bin\xray.exe" (
echo ✗ 复制后仍缺少 !STAGING!\bin\xray.exe
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
if not exist "!STAGING!\bin\sing-box.exe" (
echo ✗ 复制后仍缺少 !STAGING!\bin\sing-box.exe
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
echo ✓ 复制 bin\xray.exe, sing-box.exe
if not exist "chrome" (
echo ✗ chrome\ 目录不存在,Chrome 内核为必需文件
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
xcopy /E /I /Y chrome "!STAGING!\chrome" >nul
echo ✓ 复制 chrome\
mkdir "!STAGING!\data"
echo ✓ 创建空 data 目录(不打包 app.db,首次启动自动初始化)
echo.
echo ✓ staging 目录组装完成
echo.
REM ======== [5/6] NSIS 打包 ========
echo [5/6] 调用 NSIS 打包...
if not exist "publish\output" mkdir "publish\output"
REM 确保 installer.nsi 是 UTF-8 with BOMNSIS Unicode True 要求)
powershell -NoProfile -Command "$f=(Resolve-Path 'publish\installer.nsi').Path; $c=[System.IO.File]::ReadAllText($f,[System.Text.Encoding]::UTF8); [System.IO.File]::WriteAllText($f,$c,[System.Text.UTF8Encoding]::new($true))" >nul
for /f "usebackq delims=" %%p in (`powershell -NoProfile -Command "(Resolve-Path '!STAGING!').Path"`) do (
set "STAGING_ABS=%%p"
)
"!MAKENSIS!" /DVERSION=!VERSION! "/DSTAGINGDIR=!STAGING_ABS!" publish\installer.nsi
if %errorlevel% neq 0 (
echo ✗ NSIS 打包失败
rmdir /S /Q "!STAGING!"
pause
exit /b 1
)
echo ✓ 安装包生成成功
echo.
REM ======== [6/6] 清理 staging ========
echo [6/6] 清理临时文件...
rmdir /S /Q "!STAGING!"
echo ✓ staging 目录已清理
echo.
echo ========================================
echo ✓ 发布完成!
echo ========================================
echo.
echo 安装包位置: publish\output\AntBrowser-Setup-!VERSION!.exe
echo.
echo 提示:用户安装后可将旧的 data\ 目录粘贴到安装目录覆盖初始数据
echo.
pause