-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild_local.cmd
More file actions
202 lines (165 loc) · 5.46 KB
/
build_local.cmd
File metadata and controls
202 lines (165 loc) · 5.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
@echo off
setlocal enabledelayedexpansion
echo ================================================
echo Askflow 本地构建脚本
echo 编译 + NSIS 打包
echo ================================================
echo.
REM 设置颜色输出(可选)
set "GREEN=[92m"
set "RED=[91m"
set "YELLOW=[93m"
set "NC=[0m"
REM ====================================
REM 1. 环境检�?
REM ====================================
echo [1/6] 检查构建环�?..
REM 检�?Go
where go >nul 2>&1
if %errorlevel% neq 0 (
echo %RED%[错误]%NC% 未找�?Go,请安装 Go 并添加到 PATH
echo 下载地址: https://go.dev/dl/
exit /b 1
)
for /f "tokens=3" %%i in ('go version') do set GO_VERSION=%%i
echo �?Go %GO_VERSION%
REM 检�?NSIS
set "NSIS_PATH=C:\Program Files (x86)\NSIS\makensis.exe"
if not exist "%NSIS_PATH%" (
echo %RED%[错误]%NC% 未找�?NSIS
echo 请安�?NSIS 3.0 或更高版�?
echo 下载地址: https://nsis.sourceforge.io/Download
exit /b 1
)
for /f "tokens=2 delims=v" %%i in ('"%NSIS_PATH%" /VERSION') do set NSIS_VERSION=%%i
echo �?NSIS v%NSIS_VERSION%
REM 检查前端文�?
if not exist "frontend\dist\index.html" (
echo %YELLOW%[警告]%NC% 前端构建文件不存�?
echo 请先构建前端: cd frontend ^&^& npm run build
exit /b 1
)
echo �?前端文件存在
echo.
REM ====================================
REM 2. 创建构建目录
REM ====================================
echo [2/6] 准备构建目录...
if not exist "build" mkdir build
if not exist "build\dist" mkdir build\dist
if not exist "build\installer" mkdir build\installer
REM 清理旧文�?
if exist "build\dist\askflow.exe" del /q "build\dist\askflow.exe"
if exist "build\dist\frontend" rmdir /s /q "build\dist\frontend"
if exist "build\installer\askflow-installer.exe" del /q "build\installer\askflow-installer.exe"
echo �?构建目录准备完成
echo.
REM ====================================
REM 3. 更新 GoPPT 包
REM ====================================
echo [3/7] 更新 GoPPT 包...
go get -u github.com/VantageDataChat/GoPPT
if %errorlevel% neq 0 (
echo %RED%[错误]%NC% GoPPT 更新失败
exit /b 1
)
go mod tidy
if %errorlevel% neq 0 (
echo %RED%[错误]%NC% go mod tidy 失败
exit /b 1
)
echo √ GoPPT 更新完成
echo.
REM ====================================
REM 4. 编译 Go 程序
REM ====================================
echo [4/7] 编译 Windows 可执行文�?..
set GOOS=windows
set GOARCH=amd64
set CGO_ENABLED=1
REM 添加版本信息(可选)
for /f "tokens=2 delims==" %%i in ('git rev-parse --short HEAD 2^>nul') do set GIT_COMMIT=%%i
if "%GIT_COMMIT%"=="" set GIT_COMMIT=unknown
echo - 目标平台: Windows AMD64
echo - Git Commit: %GIT_COMMIT%
go build -ldflags "-s -w" -o build\dist\askflow.exe .
if %errorlevel% neq 0 (
echo %RED%[错误]%NC% 编译失败
exit /b 1
)
REM 显示文件大小
for %%F in (build\dist\askflow.exe) do set SIZE=%%~zF
set /a SIZE_MB=!SIZE!/1024/1024
echo �?编译成功 (大小: !SIZE_MB! MB)
echo.
REM ====================================
REM 5. 复制前端文件
REM ====================================
echo [5/7] 复制前端资源...
xcopy /s /e /y /q frontend\dist\* build\dist\frontend\dist\ >nul
if %errorlevel% neq 0 (
echo %RED%[错误]%NC% 复制前端文件失败
exit /b 1
)
REM 统计文件数量
for /f %%A in ('dir /b /s /a-d build\dist\frontend\dist ^| find /c /v ""') do set FILE_COUNT=%%A
echo �?已复�?%FILE_COUNT% 个前端文�?
echo.
REM ====================================
REM 6. 检�?LICENSE 文件
REM ====================================
echo [6/7] 检查许可证文件...
if not exist "LICENSE" (
echo %YELLOW%[警告]%NC% LICENSE 文件不存在,创建占位�?..
echo MIT License > LICENSE
echo Copyright ^(c^) 2026 Vantage >> LICENSE
echo. >> LICENSE
echo Permission is hereby granted, free of charge... >> LICENSE
)
echo �?LICENSE 文件存在
echo.
REM ====================================
REM 7. 构建 NSIS 安装�?
REM ====================================
echo [7/7] 构建 NSIS 安装程序...
if not exist "build\installer\askflow.nsi" (
echo %RED%[错误]%NC% NSIS 脚本不存�? build\installer\askflow.nsi
exit /b 1
)
"%NSIS_PATH%" /V2 build\installer\askflow.nsi
if %errorlevel% neq 0 (
echo %RED%[错误]%NC% NSIS 构建失败
exit /b 1
)
REM 显示安装包大�?
for %%F in (build\installer\askflow-installer.exe) do set INSTALLER_SIZE=%%~zF
set /a INSTALLER_SIZE_MB=!INSTALLER_SIZE!/1024/1024
echo �?安装包构建成�?(大小: !INSTALLER_SIZE_MB! MB)
echo.
REM ====================================
REM 构建完成
REM ====================================
echo ================================================
echo 构建完成�?
echo ================================================
echo.
echo 输出文件:
echo 1. 可执行文�? build\dist\askflow.exe
echo 2. 安装程序: build\installer\askflow-installer.exe
echo.
echo 接下来可�?
echo - 运行测试: build\dist\askflow.exe help
echo - 安装服务: build\installer\askflow-installer.exe
echo - 分发安装包到目标服务�?
echo.
REM 询问是否测试运行
set /p RUN_TEST="是否运行 askflow.exe help 测试? (Y/N): "
if /i "%RUN_TEST%"=="Y" (
echo.
echo ================================================
echo 测试运行
echo ================================================
build\dist\askflow.exe help
)
endlocal
pause