如何在golang中设置应用程序图标?

Gor*_*ove 24 icons go

我刚刚在Windows上创建了我的第一个应用程序.

我该如何给它一个图标?

似乎没有任何构建标志来执行此操作,我知道golang不支持资源.

Von*_*onC 33

您可以使用像akavel/rsrc这样的工具来生成包含在.rsrc部分中的指定资源的.syso文件,目的是在构建Win32 excecutables时由Go链接器使用.

请参阅lxn/walk应用程序示例,该应用程序将其他元数据嵌入其可执行文件中.

rsrc [-manifest FILE.exe.manifest] [-ico FILE.ico[,FILE2.ico...]] -o FILE.syso
Run Code Online (Sandbox Code Playgroud)

-ico="":逗号分隔的.ico文件嵌入路径列表


这不同于将二进制数据嵌入到go程序中.
为此,请使用jteeuwen/go-bindata.

要访问资产数据,我们使用Asset(string) []byte生成的输出中包含的函数.

data := Asset("pub/style/foo.css")
if len(data) == 0 {
    // Asset was not found.
}

// use asset data
Run Code Online (Sandbox Code Playgroud)


Tod*_*.Lu 5

话题很长一段时间,实际上mingw只是要求,我们不需要第三方依赖。另外,资源文件*.rc对于Win32可执行应用程序是必需的。最后,您可以在rc-demo中找到该演示

1)使用Chocolatey安装mingw: choco install mingw

2)创建main.exe.manifest文件

<?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"
/>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)

3)创建main.rc文件

100 ICON    "main.ico"
100 24      "main.exe.manifest"
101 RCDATA  "content.zip"
Run Code Online (Sandbox Code Playgroud)

4)建立

在git-bash窗口中,执行以下命令: windres -o main-res.syso main.rc && go build -i

  • &gt;1) 使用 Chocolatey 安装 mingw: choco install mingw 这需要第 3 方 DevDependency。 (2认同)

jer*_*ack 5

上述答案都不适合我。我将 ico 嵌入到 GO exe 中的唯一方法是使用 Resource Hacker。

http://www.angusj.com/resourcehacker/

  1. 安装并打开资源黑客
  2. 在Resource Hacker中打开编译好的exe
  3. 操作 > 添加图像或其他二进制资源
  4. 选择 ICO > 添加资源
  5. 保存并关闭

如果需要将其添加到构建脚本中,您也可以直接从命令行运行它。

ResourceHacker -open main.exe -save output.exe -action addskip -res main.ico -mask ICONGROUP,MAIN,
Run Code Online (Sandbox Code Playgroud)


小智 5

这效果很好:

go install github.com/tc-hib/go-winres@latest
go-winres simply --icon youricon.png
go build
Run Code Online (Sandbox Code Playgroud)

如果您的应用程序有 GUI: go-winres simply --icon icon.png --manifest gui