# MeshRay Windows 构建使用指南 **更新时间**: 2026-03-24 **状态**: ✅ **已验证可用** **工具**: go-winres --- ## 🎯 **快速开始** ### **方法一:一键构建(推荐)** ```bash .\build.bat ``` **说明**: - ✅ 自动检查并安装工具 - ✅ 自动生成资源文件 - ✅ 自动编译程序 - ✅ 显示版本信息 **预计耗时**: 约 30 秒 --- ### **方法二:手动分步构建** 如果你想了解每个步骤或遇到问题需要调试: #### **步骤 1: 生成 Windows 资源文件** ```bash cd e:\Project\MeshRay go-winres make --in build\winres.json --arch amd64 ``` **输出**: ``` ✓ rsrc_windows_amd64.syso (288,160 字节) ``` **说明**: - 包含程序图标(assets/app.ico) - 包含 Manifest 清单 - 包含版本信息 --- #### **步骤 2: 复制 syso 到正确位置** ```bash Copy-Item rsrc_windows_amd64.syso cmd\meshray\meshray.syso -Force ``` **关键点**: - ⚠️ **必须**放在 `cmd/meshray/` 目录 - ✅ Go 编译器只会在包目录下查找 syso --- #### **步骤 3: 编译程序** ```bash go build -ldflags="-s -w" -o meshray.exe ./cmd/meshray ``` **输出**: ``` ✓ meshray.exe (~30MB) ``` **参数说明**: - `-ldflags="-s -w"`: 去除调试信息,减小文件体积 --- #### **步骤 4: 验证结果** ```powershell # 查看版本信息 (Get-Item meshray.exe).VersionInfo | Select-Object CompanyName, FileDescription, FileVersion, ProductName # 或在资源管理器中查看图标 explorer . ``` **期望输出**: ``` CompanyName : MeshRay Team FileDescription : MeshRay - Decentralized Network Platform FileVersion : 2.0.0.0 ProductName : MeshRay ``` --- ## 📋 **完整的 build.bat 流程** ### **脚本内容解析** ```batch @echo off REM MeshRay Windows 完整构建脚本(go-winres) REM [1/7] 检查 go-winres 工具 where go-winres >nul 2>&1 if %ERRORLEVEL% NEQ 0 ( go install github.com/tc-hib/go-winres@latest ) REM [2/7] 检查配置文件 if not exist build\winres.json ( echo [错误] 配置文件不存在 exit /b 1 ) REM [3/7] 生成资源文件 go-winres make --in build\winres.json --arch amd64 REM [4/7] 复制 syso 到 cmd/meshray copy rsrc_windows_amd64.syso cmd\meshray\meshray.syso REM [5/7] 编译程序 go build -ldflags="-s -w" -o meshray.exe ./cmd/meshray REM [6/7] 清理临时文件 del rsrc_*.syso del cmd\meshray\meshray.syso REM [7/7] 验证并显示版本信息 powershell -Command "(Get-Item meshray.exe).VersionInfo.FileDescription" ``` --- ## 🔧 **常见问题与解决方案** ### **问题 1: go-winres 未找到** **错误信息**: ``` 'go-winres' is not recognized as an internal or external command ``` **解决方案**: ```bash go install github.com/tc-hib/go-winres@latest ``` **验证安装**: ```bash where go-winres # 应该显示:C:\Users\你的用户名\go\bin\go-winres.exe ``` **如果还是找不到**: 1. 确保 `%GOPATH%\bin` 在 PATH 环境变量中 2. 重启 PowerShell 或终端 --- ### **问题 2: 配置文件不存在** **错误信息**: ``` [错误] 配置文件不存在:build\winres.json ``` **解决方案**: ```bash # 检查文件是否存在 dir build\winres.json # 如果不存在,从备份恢复或重新创建 ``` **winres.json 位置**: ``` build/winres.json ← 源配置文件 ``` --- ### **问题 3: 资源文件生成失败** **可能原因**: 1. ❌ 图标文件路径不对 2. ❌ winres.json 格式错误 3. ❌ 权限问题 **解决方案**: ```bash # 1. 检查图标文件 dir assets\app.ico # 2. 验证 JSON 格式 go run -c "import json; json.load(open('build/winres.json'))" # 3. 以管理员身份运行终端 ``` --- ### **问题 4: 编译后没有图标** **原因**: syso文件位置不对 **解决方案**: 确保 syso在 `cmd/meshray/`目录: ``` cmd/meshray/meshray.syso ← 必须在这里 ``` **验证命令**: ```bash dir cmd\meshray\*.syso ``` --- ### **问题 5: 版本信息为空** **现象**: ```powershell (Get-Item meshray.exe).VersionInfo.FileDescription # 返回空字符串 ``` **原因**: PowerShell 缓存问题 **解决方案**: 1. **等待几秒**: ```bash Start-Sleep -Seconds 3 (Get-Item meshray.exe).VersionInfo.FileDescription ``` 2. **使用新进程**: ```bash powershell -Command "(Get-Item meshray.exe).VersionInfo.FileDescription" ``` 3. **重启资源管理器**: ```bash Stop-Process -Name explorer -Force Start-Sleep -Seconds 3 Start-Process explorer ``` 4. **右键属性查看**(不受缓存影响): - 右键 meshray.exe - 属性 → 详细信息 --- ## 📊 **构建产物说明** ### **生成的文件** | 文件 | 大小 | 用途 | 是否保留 | |------|------|------|----------| | **rsrc_windows_amd64.syso** | ~288KB | Windows 资源文件 | ❌ 临时,编译后删除 | | **meshray.exe** | ~30MB | 最终可执行文件 | ✅ 保留使用 | | **cmd/meshray/meshray.syso** | ~288KB | 编译时的资源 | ❌ 临时,编译后删除 | --- ### **项目结构** ``` e:\Project\MeshRay\ ├── build/ │ ├── main.manifest # Windows 清单文件 │ ├── winres.json # Windows 资源配置(JSON 格式) │ └── resource.rc # RC 资源脚本(备用) ├── assets/ │ ├── app.ico # 程序主图标 (278KB) │ └── tray_icon.ico # 托盘图标 (4KB) ├── cmd/ │ └── meshray/ │ ├── main.go # 主程序入口 │ └── meshray.syso # 编译时的资源文件 ├── docs/ # 文档目录 ├── internal/ # 内部代码 ├── web/ # 前端代码 ├── build.bat # Windows 构建脚本 ├── build.sh # 跨平台构建脚本 └── meshray.exe # 最终产物 ✅ ``` --- ## 🛠️ **高级用法** ### **自定义版本号** 编辑 `build/winres.json`: ```json { "RT_VERSION": { "DLL": { "0409": { "fixed": { "file_version": "2.0.1.0", // 修改这里 "product_version": "2.0.1.0" // 和这里 } } } } } ``` 然后重新构建: ```bash .\build.bat ``` --- ### **添加中文版本信息** 修改 `build/winres.json`,添加中文语言块: ```json { "RT_VERSION": { "DLL": { "080404E8": { // 中文(中国) "fixed": { "file_version": "2.0.0.0" }, "info": { "080404E8": { "FileDescription": "MeshRay - 高效、安全的去中心化异地组网平台", "CompanyName": "MeshRay Team", "LegalCopyright": "Copyright (c) 2026 MeshRay Team" } } } } } } ``` **注意**: 中文可能需要处理编码问题(UTF-8 with BOM) --- ### **多架构构建** **构建 32 位版本**: ```bash go-winres make --in build\winres.json --arch 386 go build -ldflags="-s -w" -o meshray-386.exe ./cmd/meshray ``` **同时构建 64 位和 32 位**: ```bash go-winres make --in build\winres.json --arch amd64,386 ``` --- ## 📝 **最佳实践** ### **1. 首次使用前** ```bash # 安装 go-winres 工具 go install github.com/tc-hib/go-winres@latest # 验证安装 go-winres --version # 检查配置文件 dir build\winres.json # 检查图标文件 dir assets\app.ico ``` --- ### **2. 日常构建** ```bash # 最简单的方式 .\build.bat # 或者使用 PowerShell 设置 UTF-8 编码 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 .\build.bat ``` --- ### **3. 清理构建环境** ```bash # 删除所有临时文件 Remove-Item rsrc_*.syso -ErrorAction SilentlyContinue Remove-Item cmd\meshray\*.syso -ErrorAction SilentlyContinue Remove-Item meshray.exe -ErrorAction SilentlyContinue # 清理Go缓存 go clean -cache ``` --- ### **4. 验证构建结果** ```bash # 1. 检查文件大小 dir meshray.exe # 2. 查看版本信息 (Get-Item meshray.exe).VersionInfo | Format-List # 3. 在资源管理器中查看图标 explorer . ``` --- ## 🎯 **故障排查流程图** ``` 开始 ↓ 检查 go-winres 是否安装? ├─ 否 → go install github.com/tc-hib/go-winres@latest └─ 是 ↓ 检查 build/winres.json 是否存在? ├─ 否 → 创建或恢复配置文件 └─ 是 ↓ 检查 assets/app.ico 是否存在? ├─ 否 → 准备 ICO 格式图标文件 └─ 是 ↓ 执行 go-winres make ├─ 失败 → 检查错误信息,修复配置 └─ 成功 ↓ 复制 syso 到 cmd/meshray/ ↓ 执行 go build ├─ 失败 → 检查 syso 位置 └─ 成功 ↓ 验证版本信息 ├─ 为空 → 等待缓存刷新或重启 PowerShell └─ 正常 → ✅ 构建完成 ``` --- ## 📚 **相关文档** - [MeshRay Windows 图标与版本信息完美解决方案.md](./MeshRay Windows 图标与版本信息完美解决方案.md) - [优化构建脚本 - 移除 winres 目录.md](./优化构建脚本 - 移除 winres 目录.md) - [MeshRay 构建脚本已更新.md](./MeshRay 构建脚本已更新.md) --- ## ✅ **总结** ### **推荐方案** | 场景 | 推荐方法 | 说明 | |------|----------|------| | **日常构建** | `.\build.bat` | 一键完成,最简单 | | **学习理解** | 手动分步执行 | 了解每个步骤 | | **问题调试** | 手动分步 + 详细日志 | 定位问题所在 | | **CI/CD** | 参考 build.bat 编写脚本 | 自动化流程 | --- ### **核心要点** 1. ✅ **工具准备**: 安装 go-winres 2. ✅ **配置文件**: build/winres.json 3. ✅ **关键步骤**: syso 必须放在 cmd/meshray/ 4. ✅ **版本信息**: 通过 winres.json 统一管理 5. ✅ **构建脚本**: 使用 build.bat 一键完成 --- **使用状态**: ✅ **已验证可用,无卡住问题** **推荐方式**: ✅ **使用 build.bat 一键构建** **注意事项**: ✅ **syso文件位置是关键** *MeshRay - 简单、高效、专业的构建体验!* ✨