本文档介绍如何在Windows开发环境中使用PowerShell构建脚本来编译MediaProxy项目。
- Go环境: 确保已安装Go 1.19或更高版本
- PowerShell: Windows 10/11自带PowerShell 5.1或更高版本
- Git: 用于获取版本信息(可选)
- UPX: 用于二进制文件压缩(可选,推荐安装)
UPX可以显著减小二进制文件大小:
# 使用Chocolatey安装
choco install upx
# 或者从官网下载: https://upx.github.io/# 显示帮助信息
.\build.ps1 -Help
# 构建所有平台(默认)
.\build.ps1
# 构建指定平台
.\build.ps1 -Platform windows/amd64
# 开发模式构建(快速,无优化)
.\build.ps1 -Dev
# 清理构建目录
.\build.ps1 -Clean| 参数 | 说明 | 示例 |
|---|---|---|
-All |
构建所有平台(默认行为) | .\build.ps1 -All |
-Platform |
指定构建平台 | .\build.ps1 -Platform linux/amd64 |
-Clean |
清理构建目录 | .\build.ps1 -Clean |
-Dev |
开发模式(快速构建,跳过优化) | .\build.ps1 -Dev |
-NoUpx |
禁用UPX压缩 | .\build.ps1 -NoUpx |
-Verbose |
详细输出 | .\build.ps1 -Verbose |
-Help |
显示帮助信息 | .\build.ps1 -Help |
linux/amd64- Linux 64位linux/arm64- Linux ARM64linux/386- Linux 32位windows/amd64- Windows 64位windows/386- Windows 32位darwin/amd64- macOS Inteldarwin/arm64- macOS Apple Siliconfreebsd/amd64- FreeBSD 64位
适用于开发阶段的快速测试:
.\build.ps1 -Platform windows/amd64 -Dev -Verbose构建所有平台的优化版本:
.\build.ps1 -Verbose只构建Linux 64位版本:
.\build.ps1 -Platform linux/amd64如果没有安装UPX或不想压缩:
.\build.ps1 -NoUpxmediaProxy/
├── build/ # 构建的二进制文件
│ ├── mediaProxy_windows_amd64.exe
│ ├── mediaProxy_linux_amd64
│ └── ...
└── dist/ # 发布包
├── mediaProxy_v1.0.0_windows_amd64.zip
├── mediaProxy_v1.0.0_linux_amd64.tar.gz
└── ...
每个发布包包含:
- 编译好的二进制文件
- README.md 文档
- start.bat/start.sh 启动脚本
- config.example 配置示例
- Go编译标志:
-s -w去除调试信息 - UPX压缩: 使用LZMA算法进一步压缩
- Trimpath: 去除构建路径信息
构建时会自动嵌入以下信息:
- Git版本标签或提交哈希
- 构建时间(UTC)
- Git提交哈希
-
Go环境未找到
Error: Go environment not found解决:确保Go已正确安装并添加到PATH
-
UPX压缩失败
UPX compression failed, continuing...解决:这是警告,不影响构建。可安装UPX或使用
-NoUpx参数 -
权限错误
Access denied解决:以管理员身份运行PowerShell
-
执行策略限制
cannot be loaded because running scripts is disabled解决:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
使用-Verbose参数获取详细的构建信息:
.\build.ps1 -Platform windows/amd64 -Verbose| 构建模式 | 构建时间 | 文件大小 | 适用场景 |
|---|---|---|---|
| 开发模式 | ~10秒 | ~8MB | 开发测试 |
| 标准模式 | ~30秒 | ~3MB | 生产部署 |
| 全平台 | ~3分钟 | 各平台~3MB | 发布版本 |
# 检查Go环境
go version
# 清理并构建
.\build.ps1 -Clean
.\build.ps1 -All -Verbose
# 检查构建结果
if ($LASTEXITCODE -eq 0) {
Write-Host "Build successful"
} else {
Write-Host "Build failed"
exit 1
}可以结合Windows任务计划程序实现定时构建:
# 创建构建任务
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\path\to\build.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"
Register-ScheduledTask -TaskName "MediaProxy-Build" -Action $action -Trigger $trigger- 项目主页: MediaProxy GitHub
- 问题反馈: Issues
- 贡献指南: CONTRIBUTING.md