一、准备:
GOPATHbinpath
bin
1.2、准备好自己的程序ico图标文件,放在main.go同级目录。
下文中提到的:控制台运行命令,都是在main.go同级目录运行的。
二、用到的工具:
2.1、rsrc
- 支持生成UAC权限、
生成应用程序图标、生成应用程序信息 - 缺点:生成应用程序图标和应用程序信息后,64位系统下对go程序打包时报错,因此不得不再多使用下面一个包。
- 支持生成应用程序图标、生成应用程序信
- 缺点:不支持UAC权限文件生成
2.3、可根据情况按需使用,如果只需要UAC权限则使用rsrc工具即可。
三、使用rsrc生成UAC权限
3.1、安装rsrc工具:
- 控制台运行命令:
# 安装rsrc包> go install github.com/akavel/rsrc
# 测试是否安装成功
> rsrc
- 如图:
rsrc步骤:1.1
3.2、生成UAC权限文件:
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.sysonac.syso
3.4、打包应用程序:
步骤:5.1
四、使用goversioninfo生成应用程序图标+应用程序信息
# 安装goversioninfo包
> go install github.com/josephspurrier/goversioninfo
# 测试是否安装成功
> goversioninfo -h
4.2、生成应用图标、应用信息文件:
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": ""
}
IconPathgo generate -run "goversioninfo -platform-specific=false -64=true"
-64=true
resource.syso
五、打包应用程序:
5.1、普通应用程序:
go build
5.2、GUI程序:
go build -ldflags "-H=windowsgui"