安装 fyne
CLI
go install fyne.io/fyne/v2/cmd/fyne@latest
使用 fyne bundle
打包图标
fyne bundle -o bundled.go icon.png
确保在项目根目录中有一个 icon.png
文件,然后执行上述命令生成 bundled.go
文件。在生成的 bundled.go
文件中,资源会被定义为一个全局变量。可以直接在代码中引用这个变量来设置窗口图标。
示例窗口代码
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
)
func main() {
myApp := app.New()
// 使用打包的图标资源
icon := resourceIconPng
myWindow := myApp.NewWindow("程序名称")
// 设置窗口图标
myWindow.SetIcon(icon)
}
go-winres
安装
go install github.com/tc-hib/go-winres@latest
打包exe
1、初始化go-winres
注意项目内必须有main.go
文件
go-winres init
生成完毕项目内会出现winres
文件夹结构如下。其中icon.png
和icon16.png
为图标文件、winres.json
为配置信息。
2、winres.json
信息解析(机翻)
{
"RT_GROUP_ICON": {
"APP": {
"0000": [
"icon.png", // 图标文件
"icon16.png" // 图标文件
]
}
},
"RT_MANIFEST": {
"#1": {
"0409": {
"identity": {
"name": "", // 应用程序名称
"version": "" // 应用程序版本
},
"description": "", // 应用程序描述
"minimum-os": "win7", // 最低操作系统要求,Windows 7
"execution-level": "", // 执行级别
"ui-access": false, // UI 访问权限
"auto-elevate": false, // 自动提升权限
"dpi-awareness": "system", // DPI 感知级别
"disable-theming": false, // 禁用主题
"disable-window-filtering": false, // 禁用窗口过滤
"high-resolution-scrolling-aware": false, // 高分辨率滚动感知
"ultra-high-resolution-scrolling-aware": false, // 超高分辨率滚动感知
"long-path-aware": false, // 长路径感知
"printer-driver-isolation": false, // 打印机驱动隔离
"gdi-scaling": false, // GDI 缩放
"segment-heap": false, // 段堆
"use-common-controls-v6": false // 使用常见控件 v6
}
}
},
"RT_VERSION": {
"#1": {
"0000": {
"fixed": {
"file_version": "", // 文件版本
"product_version": "" // 产品版本
},
"info": {
"0409": {
"Comments": "", // 注释
"CompanyName": "", // 公司名称
"FileDescription": "", // 文件描述
"FileVersion": "", // 文件版本
"InternalName": "", // 内部名称
"LegalCopyright": "", // 法律版权
"LegalTrademarks": "", // 法律商标
"OriginalFilename": "", // 原始文件名
"PrivateBuild": "", // 私有版本
"ProductName": "", // 产品名称
"ProductVersion": "", // 产品版本
"SpecialBuild": "" // 特别版本
}
}
}
}
}
}
3、构建打包文件
go-winres make
项目内应会出现两个后缀为syso的文件
4、打包命令
go build //带有cmd黑框
go build -ldflags "-s -w -H=windowsgui" //没有cmd黑框,适合有gui的
Comments NOTHING