工具下载
go installgithub.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest
执行完毕后GOPATH的 bin 目录里出现一个goversioninfo.exe则为成功
提权
在main.go同级目录下创建 nac.manifest 文件内容为:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="9.0.0.0"
processorArchitecture="x86"
name="myapp.exe"
type="win32"
/>
<description>myapp</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
文件详细信息
在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": "你的图标文件",
"ManifestPath": ""
}
设置图标
把图标复制到main.go同级目录下,图标格式为:ico ,并在main.go首行增加:
//go:generate goversioninfo -icon=图标文件 -manifest=提权文件
编译
- 生成编译需要的文件 :
go generate
成功则会生成 resource.syso资源文件 2. 打包
go build //带有cmd黑框
go build -ldflags "-s -w -H=windowsgui" //没有cmd黑框,适合有gui的
报错解决
上面的解决办法是,编译时带一下参数
-ldflags="-linkmode internal"
go build -ldflags "-s -w -linkmode internal"
go build -ldflags "-s -w -H=windowsgui -linkmode internal" //没有cmd黑框,适合有gui的