前言
go build默认产生的可执行文件没有图标icon,有时候挺丑的,想增加icon怎么办呢
1、方法1 - windres命令
怎么安装和使用minGW参考前一篇文章Win10下新的gcc工具
1.1、创建rc文件
以test.go举例, 假设打包文件名test.exe, ico文件名test.ico
rc文件命名test.exe.rc
文件中输入
1
|
IDI_ICON1 ICON "test.ico"
|
1.2、执行windres命令创建syso文件
1
|
windres -o test.exe.syso test.exe.rc
|
1.3、执行go build
2、方法2 - rsrc命令
需要先下载rsrc命令
1
|
go get github.com/akavel/rsrc
|
2.1、创建manifest文件
仍然以test.go举例,假设打包文件名test.exe,ico文件名test.ico
manifest文件名test.exe.manifest
文件中输入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="controls"
type="win32">
</assemblyIdentity>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
|
2.2、执行rsrc命令创建syso
1
|
rsrc -manifest test.exe.manifest -ico test.ico -o test.exe.syso
|
2.3、执行go build
注:
测试发现,有的blog写的打包命令建议带参数:
1
|
go build -ldflags="-H windowsgui -w -s"
|
应该只有gui的程序才需要带,本文举例是非gui界面的,因此带了反而会出现无法正确运行。
对比带了该参数比直接的go build打包出来的文件大小不一致,偏小很多,可能非gui的命令行程序不适合带这个参数。
比如用walk的gui go项目带了没问题。
验证通过2、3步骤做了ico处理的,建议通过go build打包。
3、可以写打包脚本
创建build.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
@echo off
Title build...
Color 0A
REM 声明采用UTF-8编码
chcp 65001
:menu
echo =============================================
echo.
echo No.1-选择用minGW工具打包
echo.
echo No.2-选择用rsrc工具打包
echo.
echo =============================================
set /p user_input=请输入你的选择:
if %user_input% equ 1 goto 1
if %user_input% equ 2 goto 2
if %user_input% == '3' exit
pause
:: 1. minGW
:1
echo "请先安装好dev C++工具minGW"
echo windresing...
windres -o md5.exe.syso md5.exe.rc
echo building...
go build
goto end
:: 2.rsrc
:2
echo "需要先安装工具命令rsrc,命令:go get github.com/akavel/rsrc"
echo rsrc manifesting...
rsrc -manifest md5.exe.manifest -o md5.exe.syso -ico md5.ico
echo building...
go build
goto end
:end
echo complete
|