You can use a tool like akavel/rsrc in order to generate a .syso file with specified resources embedded in .rsrc
section, aimed for consumption by Go linker when building Win32 excecutables.
See as an example the lxn/walk application, which embeds other metadata in its executable.
rsrc [-manifest FILE.exe.manifest] [-ico FILE.ico[,FILE2.ico...]] -o FILE.syso
-ico=""
: comma-separated list of paths to .ico files to embed
This differs from embedding binary data into a go program.
For that, use jteeuwen/go-bindata.
To access asset data, we use the
Asset(string) []byte
function which is included in the generated output.
data := Asset("pub/style/foo.css")
if len(data) == 0 {
// Asset was not found.
}
// use asset data
Update 2021: as noted in John N’s answer, you can also use:
github.com/tc-hib/go-winres
A simple command line tool for embedding usual resources in Windows executables built with Go:
- A manifest
- An application icon
- Version information (the Details tab in file properties)
- Other icons and cursors
It can be used as a library too.