Package winres provides functions to create a resource section for Windows executables. This is where the application's icon, manifest, and version information are stored. Create an empty ResourceSet, call the Set method to add resources to it and then use the WriteObject method to produce an object file. Each resource must be named, so it can later be accessed with FindResource, LoadImage, etc. To name a resource, you may use an int that you cast to winres.ID, or a string that you cast to winres.Name. winres produces a linkable COFF object. Save it in your project's root directory with extension “syso” and it will be automatically included by “go build”. It is recommended to name this object with target suffixes, so that the “go build” command automatically links the proper object for each target. For example: Embedding an icon, version information, and a manifest: You can provide different resources depending on the user's langage. To do so, you should provide a language code identifier (LCID) to the Set method. A list of LCIDs is available there: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/ As an example, the LCID for en-US is 0x0409. winres can do a few more things: extract resources from an executable, replace resources in an executable, export cursors or icons...
Package icns implements an encoder for Apple's `.icns` file format. Reference: "https://en.wikipedia.org/wiki/Apple_Icon_Image_format". icns files allow for high resolution icons to make your apps look sexy. The most common ways to generate icns files are 1. use `iconutil` which is a Mac native cli utility, or 2. use tools that wrap `ImageMagick` which adds a large dependency to your project for such a simple use case. With this library you can use pure Go to create icns files from any source image, given that you can decode it into an `image.Image`, without any heavyweight dependencies or subprocessing required. You can also use this library to create icns files on windows and linux. A small CLI app `icnsify` is provided to allow you to create icns files using this library from the command line. It supports piping, which is something `iconutil` does not do, making it substantially easier to wrap. Note: All icons within the icns are sized for high dpi retina screens, using the appropriate icns OSTypes.
Package goversioninfo creates a syso file which contains Microsoft Version Information and an optional icon.