GO exe生成图标版本信息

为什么要添加图标和详细信息
作为桌面程序,有一个图标,显得更正式一些。详细信息有版本号方便做版本识别。算了,编不下去了。不管那么多,反正别人有这些,你就应该有这些功能(无奈)。golang 作为一个后端语言,对windows 界面编程支持不是那么友好,直接添加图标和详细信息有一定难度。还好有第三方库–GoVersionInfo,可以帮助我们解决这一难题。
 

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

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

安装GoVersionInfo

go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo

将刚下载下来的GoVersionInfo 的目录github.com\josephspurrier\goversioninfo\testdata\resource拷贝到我们的工程目录(main.go所在目录).并把目录中的versioninfo.json拷贝到与main.go同目录。
 

修改文件

在main.go 的第一行添加:

main.go 添加注释 
//go:generate goversioninfo -icon=jiuwei.ico -manifest=main.exe.manifest

然后修改与main.go同一级目录下的versioninfo.json文件。将里面的字段“ProductVersion”更改为你想要的版本号即可.(同时也可以修改其他信息如:版权,产品名称,文件说明等)

{
    "FixedFileInfo": {
        "FileVersion": {
            "Major": 1,
            "Minor": 0,
            "Patch": 0,
            "Build": 0
        },
        "ProductVersion": {
            "Major": 1,
            "Minor": 0,
            "Patch": 0,
            "Build": 0
        },
        "FileFlagsMask": "3f",
        "FileFlags ": "00",
        "FileOS": "040004",
        "FileType": "01",
        "FileSubType": "00"
    },
    "StringFileInfo": {
        "Comments": "Test file.",
        "CompanyName": "Test",
        "FileDescription": "Test",
        "FileVersion": "v1.0.0.0",
        "InternalName": "Test.exe",
        "LegalCopyright": "   版权所有 ",
        "LegalTrademarks": "",
        "OriginalFilename": "Test.exe",
        "PrivateBuild": "",
        "ProductName": "Test",
        "ProductVersion": "v1.0.0.0",
        "SpecialBuild": ""
    },
    "VarFileInfo": {
        "Translation": {
            "LangID": "0409",
            "CharsetID": "04B0"
        }
    },
    "IconPath": "",
    "ManifestPath": ""
}

首先用,go generate 命令生成resource.syso资源文件

再用,go build 命令生成EXE文件。这里需要用Directory的方式编译,不能用File的方式编译。(也就是不能用go build main.go 这种方式)。原因是通过Directory的方式编译,编译器会自动寻找同目录下的资源文件并打包进EXE。
在编译过程中,你可能会遇到报错
 

C:\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `C:\Users\hjd\AppData\Local\Temp\go-link-681106599\000000.o' is incompatible with i386:x86-64 output
collect2.exe: error: ld returned 1 exit status

上面的解决办法是,编译时带一下参数

-ldflags="-linkmode internal"

go build -o myapp.exe -ldflags="-linkmode internal" -ldflags="-H windowsgui"

go build -o ./myapp.exe -ldflags="-linkmode internal" -ldflags="-H windowsgui"

我之所以有 -ldflags="-H windowsgui" 是取消黑窗口 因为是GUI界面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Visual Studio Code是一款功能强大的集成开发环境,可以用于编写和调试各种编程语言,包括Go语言。在使用Visual Studio Code进行Go语言开发时,有时可能会遇到一些问题。根据提供的引用内容,有两个常见问题及其解决方案如下: 问题1: 在使用Visual Studio Code编写Go语言代码时,出现了与老师的代码一模一样,但是却出现了报错的情况。这可能是扩展设置没有正确配置引起的。 解决方案: 确保已经安装了Go扩展,并按照以下步骤配置扩展: 1. 打开Visual Studio Code并点击"扩展"图标(或使用快捷键Ctrl+Shift+X)。 2. 在搜索框中输入"Go",找到并点击"Go"扩展进行安装。 3. 安装完成后,点击扩展旁边的齿轮按钮,进入扩展设置。 4. 在"Go: Gopath"设置中,选择正确的Go工作区目录。 5. 在"Go: Format Tool"设置中,选择正确的代码格式化工具(例如"gofmt")。 6. 在"Go: Lint Tool"设置中,选择正确的代码检查工具(例如"golint")。 问题2: 在Windows系统中使用Visual Studio Code进行Go语言插件安装时,无法下载插件,出现连接失败的问题。 解决方案: 这可能是由于国内长城防火墙限制导致的。您可以尝试以下方法解决该问题: 1. 在GitHub上直接下载所需的插件代码。 2. 打开命令提示符(cmd)并导航到插件代码的目录。 3. 运行命令"go install -v"来生成并安装插件。 希望以上解决方案能够帮助您解决问题。如果您还有其他相关问题,请告诉我。 相关问题: 1. 如何在Visual Studio Code中调试Go语言程序? 2. 如何使用Visual Studio Code进行Go语言单元测试? 3. 如何安装其他有用的Go语言扩展?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值