一、准备:
1.1、GOPATH
目录下的bin
文件夹添加系统path
变量中。
添加后可直接在任意位置控制台中直接调用bin
目录下的可执行程序。
1.2、准备好自己的程序ico图标文件,放在main.go同级目录。
下文中提到的:控制台运行命令,都是在main.go同级目录运行的。
二、用到的工具:
2.1、rsrc
- 支持生成UAC权限、
生成应用程序图标、生成应用程序信息 - 缺点:生成应用程序图标和应用程序信息后,64位系统下对go程序打包时报错,因此不得不再多使用下面一个包。
2.2、goversioninfo
- 支持生成应用程序图标、生成应用程序信
- 缺点:不支持UAC权限文件生成
2.3、可根据情况按需使用,如果只需要UAC权限则使用rsrc工具即可。
三、使用rsrc生成UAC权限
3.1、安装rsrc工具:
- 控制台运行命令:
# 安装rsrc包
> go install github.com/akavel/rsrc
# 测试是否安装成功
> rsrc
- 如图:
注意:如果无法运行
rsrc
,请参考步骤:1.1
3.2、生成UAC权限文件:
- 程序main.go目录创建文件:
manifest.xml
,内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
- 控制台运行命令:
rsrc -manifest manifest.xml -o nac.syso
,如图:
- 成功后会在程序根目录生成
nac.syso
文件,如图:
3.4、打包应用程序:
- 如果不需要添加程序图标以及程序信息,请直接跳到
步骤:5.1
,参考应用程序打包流程。
四、使用goversioninfo生成应用程序图标+应用程序信息
4.1、安装goversioninfo工具:
- 控制台运行命令:
# 安装goversioninfo包
> go install github.com/josephspurrier/goversioninfo
# 测试是否安装成功
> goversioninfo -h
- 成功如下图所示:
注意:如果无法运行
goversioninfo -h
,请参考步骤:1.1
4.2、生成应用图标、应用信息文件:
- 程序main.go同级目录创建
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 xxxxxx",
"LegalTrademarks": "",
"OriginalFilename": "原始文件名",
"PrivateBuild": "",
"ProductName": "产品名称",
"ProductVersion": "v1.0.0.0",
"SpecialBuild": ""
},
"VarFileInfo": {
"Translation": {
"LangID": "0409",
"CharsetID": "04B0"
}
},
"IconPath": "favicon.ico",
"ManifestPath": ""
}
- 文件中
IconPath
字段对应你应用程序的ico图标文件,并将图标文件放在main.go同级目录。 - 控制台运行命令:
go generate -run "goversioninfo -platform-specific=false -64=true"
,如图:
注意:64位系统需要在命令中添加
-64=true
- 成功后,会生成
resource.syso
文件,如图:
五、打包应用程序:
5.1、普通应用程序:
- 控制台运行命令:
go build
5.2、GUI程序:
- 控制台运行命令:
go build -ldflags "-H=windowsgui"