GoLang 使用 goversioninfo 给编译出来的 window/exe 程序添加图标和版本信息

1. 创建配置文件,在项目目录创建文件 versioninfo.json,添加以下内容:

{
"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": "这是程序描述",
"CompanyName": "这是公司名称",
"FileDescription": "这是文件说明",
"FileVersion": "v1.0.0.0",
"InternalName": "这是程序内部名称",
"LegalCopyright": "Copyright (c) 2022 XCGUI",
"LegalTrademarks": "",
"OriginalFilename": "这是原始文件名",
"PrivateBuild": "",
"ProductName": "这是产品名称",
"ProductVersion": "v1.0.0.0",
"SpecialBuild": ""
},
"VarFileInfo": {
"Translation": {
"LangID": "0804",
"CharsetID": "04B0"
}
},
"IconPath": "./resource/icon.ico",
"ManifestPath": "./resource/goversioninfo.exe.manifest"
}

2. 添加资源文件,在项目目录创建 resource 目录

将 icon.ico 图标文件放入 resource 目录。

在 resource 目录创建文件 goversioninfo.exe.manifest,加入以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<!--<dpiAware>True/PM</dpiAware>-->
</asmv3:windowsSettings>
</asmv3:application>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"
/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates app support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates app support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates app support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates app support for Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!--The ID below indicates app support for Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
</assembly>

3. 获取工具

go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest

执行完毕后GOPATH的bin目录里出现一个goversioninfo.exe则为成功。

4. 在 main.go 文件第一行添加以下代码:

//go:generate goversioninfo

5. 编译 .syso 文件

go generate

6. 打包 .exe 文件

go build -i -ldflags="-H windowsgui"




2323
0
1年前