记一次Golang Windows GUI 程序 添加UAC权限+exe图标+程序信息

一、准备:

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"

六、效果:

6.1、应用程序图标:

在这里插入图片描述

6.2、应用程序信息:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值