83 lines
3.0 KiB
PowerShell
83 lines
3.0 KiB
PowerShell
# MeshRay Windows 构建脚本
|
|
# 用于生成无控制台窗口的 Windows GUI 程序
|
|
|
|
Write-Host "🔨 开始构建 MeshRay..." -ForegroundColor Cyan
|
|
|
|
# 设置项目根目录
|
|
$ProjectRoot = Split-Path -Parent $PSScriptRoot
|
|
Set-Location $ProjectRoot
|
|
|
|
# 清理旧的构建产物
|
|
Write-Host "`n🧹 清理旧的构建文件..." -ForegroundColor Yellow
|
|
if (Test-Path ".\meshray.exe") {
|
|
Remove-Item ".\meshray.exe" -Force
|
|
}
|
|
if (Test-Path ".\meshray-test.exe") {
|
|
Remove-Item ".\meshray-test.exe" -Force
|
|
}
|
|
|
|
# 编译前端(如果 dist 目录不存在)
|
|
if (-not (Test-Path ".\web\dist\index.html")) {
|
|
Write-Host "`n📦 编译前端资源..." -ForegroundColor Cyan
|
|
Set-Location ".\web"
|
|
npm run build
|
|
if ($LASTEXITCODE -ne 0) {
|
|
Write-Host "❌ 前端编译失败!" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
Set-Location $ProjectRoot
|
|
} else {
|
|
Write-Host "`n✅ 前端资源已存在,跳过编译" -ForegroundColor Green
|
|
}
|
|
|
|
# 清理 Go 缓存
|
|
Write-Host "`n🧹 清理 Go 构建缓存..." -ForegroundColor Yellow
|
|
go clean -cache
|
|
|
|
# 方式 1: 使用 -ldflags -H=windowsgui (推荐,简单快速)
|
|
Write-Host "`n🚀 编译 Windows GUI 程序(无控制台窗口)..." -ForegroundColor Cyan
|
|
$OutputFile = ".\meshray.exe"
|
|
$LdFlags = "-s -w -H=windowsgui"
|
|
|
|
# 获取版本信息
|
|
$Version = "2.0.0"
|
|
$BuildTime = Get-Date -Format "2006-01-02 15:04:05"
|
|
$GitCommit = try { git rev-parse --short HEAD 2>$null } catch { "unknown" }
|
|
|
|
# 添加版本信息到 ldflags
|
|
$LdFlags += " -X main.Version=$Version"
|
|
$LdFlags += " -X main.BuildTime=$BuildTime"
|
|
$LdFlags += " -X main.GitCommit=$GitCommit"
|
|
|
|
Write-Host " 版本:$Version" -ForegroundColor Gray
|
|
Write-Host " 编译时间:$BuildTime" -ForegroundColor Gray
|
|
Write-Host " Git Commit: $GitCommit" -ForegroundColor Gray
|
|
Write-Host " LdFlags: $LdFlags" -ForegroundColor Gray
|
|
|
|
# 执行编译
|
|
go build -o $OutputFile -ldflags "$LdFlags" ./cmd/meshray
|
|
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-Host "`n✅ 编译成功!" -ForegroundColor Green
|
|
Write-Host " 输出文件:$OutputFile" -ForegroundColor Green
|
|
|
|
# 显示文件大小
|
|
$FileSize = (Get-Item $OutputFile).Length / 1MB
|
|
Write-Host " 文件大小:{0:N2} MB" -f $FileSize -ForegroundColor Gray
|
|
|
|
# 验证是否为 GUI 程序(无控制台窗口)
|
|
Write-Host "`n📋 验证结果:" -ForegroundColor Cyan
|
|
Write-Host " ✅ 已配置为 Windows GUI 程序" -ForegroundColor Green
|
|
Write-Host " ✅ 启动时不会显示控制台窗口" -ForegroundColor Green
|
|
Write-Host " ✅ 系统托盘图标正常工作" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "`n❌ 编译失败!" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "`n✨ 构建完成!" -ForegroundColor Green
|
|
Write-Host "`n💡 提示:" -ForegroundColor Yellow
|
|
Write-Host " 运行 .\meshray.exe 启动程序" -ForegroundColor Gray
|
|
Write-Host " 程序将在系统托盘中显示图标" -ForegroundColor Gray
|
|
Write-Host " 不会显示控制台窗口" -ForegroundColor Gray
|