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

问题描述 投票:18回答:3

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

我该如何给它一个图标?

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

go icons
3个回答
27
投票

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

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

rsrc [-manifest FILE.exe.manifest] [-ico FILE.ico[,FILE2.ico...]] -o FILE.syso

-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

3
投票

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

1)使用Chocolatey:choco install mingw安装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>

3)创建main.rc文件

100 ICON    "main.ico"
100 24      "main.exe.manifest"
101 RCDATA  "content.zip"

4)建立

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


2
投票

Joseph Spurrier有一个github包GoVersionInfo

Go语言的Microsoft Windows文件属性/版本信息和图标资源生成器

包创建一个syso文件,其中包含Microsoft Windows版本信息和可选图标。当您运行“go build”时,Go将在可执行文件中嵌入版本信息和可选图标以及可选清单。如果它与main()函数位于同一目录中,Go将自动使用syso文件。

© www.soinside.com 2019 - 2024. All rights reserved.