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"
編譯成功後,右鍵查看屬性吧
如有疑問,歡迎在評論區留言