https://github.com/webview/webview_go
windows 下编译需要先安装 mingw-w64
并且设置环境变量 CGO_ENABLED=1
将ui静态资源打包进go里面,编译后生成单一的可执行文件。 http服务调用go内部的静态资源
//go:embed ui/*
var ui embed.FS
uiDir, err := fs.Sub(ui, "ui")
if err != nil {
log.Fatal(err)
}
fileService := http.FileServer(http.FS(uiDir))
http.Handle("/", http.StripPrefix("/", fileService))
go 在windows下编译出来的可执行文件是没有图标的。
使用 akavel/rsrc: Tool for embedding .ico & manifest resources in Go programs for Windows. (github.com)
可以加上
-
添加配置文件,ico.manifase 文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="x86" name="controls" type="win32" ></assemblyIdentity> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" ></assemblyIdentity> </dependentAssembly> </dependency> </assembly>
-
生成图标配置文件
rsrc.exe -manifest ico.manifest -ico rc.ico main.syso
-
将
main.syso
文件放到 main.go 文件路径下面 go build 出来的exe 文件自动就会有图标了。 -
ubuntu 系统下增加图标
默认使用go build
,编译出来的一个可执行文件体积有 7M
多。压缩可执行文件,减少磁盘占用空间,是一个桌面软件的最求之一。
- 编译增加参数
go build -ldflags "-s -w -H windowsgui"
其中 -ldflags 里的 -s 去掉符号信息, -w 去掉DWARF调试信息,得到的程序就不能用gdb调试了。
此时得到的文件体积有7M
多