golang EXE程序添加圖標和詳細信息(版本號,版權,公司信息等)

golang EXE程序添加圖標和詳細信息(版本號,版權,公司信息等)

爲什麼要添加圖標和詳細信息

作爲桌面程序,有一個圖標,顯得更正式一些。詳細信息有版本號方便做版本識別。算了,編不下去了。不管那麼多,反正別人有這些,你就應該有這些功能(無奈)。golang 作爲一個後端語言,對windows 界面編程支持不是那麼友好,直接添加圖標和詳細信息有一定難度。還好有第三方庫–GoVersionInfo,可以幫助我們解決這一難題。

什麼是GoVersionInfo

在這裏插入圖片描述
githup,描述如上所示。大意是:GoVersionInfo是用於Go語言的Microsoft Windows文件屬性/版本信息和圖標資源生成器

程序包將創建一個syso文件,其中包含Microsoft Windows版本信息和一個可選圖標。當您運行“ go build”時,Go將在可執行文件中嵌入版本信息以及可選圖標和可選清單。如果它與main()函數位於同一目錄中,則Go將自動使用syso文件。

安裝GoVersionInfo

要安裝,請運行以下命令:

go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo

這裏默認,你已經安裝golang並配置好GOPATH,GOROOT等環境變量.同時也安裝了git bash.

文件目錄佈局

將剛下載下來的GoVersionInfo 的目錄github.com\josephspurrier\goversioninfo\testdata\resource拷貝到我們的工程目錄(main.go所在目錄).並把目錄中的versioninfo.json拷貝到與main.go同目錄。
目標佈局如下圖:
在這裏插入圖片描述

修改文件

在main.go 的第一行添加:

//go:generate goversioninfo -icon=resource/icon.ico -manifest=resource/goversioninfo.exe.manifest

然後修改與main.go同一級目錄下的versioninfo.json文件。將裏面的字段“ProductVersion”更改爲你想要的版本號即可.(同時也可以修改其他信息如:版權,產品名稱,文件說明等)

編譯命令

首先用,go generate 命令生成resource.syso資源文件
再用,go build 命令生成EXE文件。這裏需要用Directory的方式編譯,不能用File的方式編譯。(也就是不能用go build main.go 這種方式)。原因是通過Directory的方式編譯,編譯器會自動尋找同目錄下的資源文件並打包進EXE。
在編譯過程中,你可能會遇到如下報錯:

C:\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `C:\Users\hjd\AppData\Local\Temp\go-link-681106599\000000.o' is incompatible with i386:x86-64 output
collect2.exe: error: ld returned 1 exit status

上面的解決辦法是,編譯時帶一下參數

-ldflags="-linkmode internal"
所以,編譯命令是:go build -o yourapp.exe -ldflags="-linkmode internal"

簡單點說,直接執行以下命令即可:

go generate
go build -o yourappname.exe -ldflags="-linkmode internal"

編譯成功後,右鍵查看屬性吧
如有疑問,歡迎在評論區留言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章