LoginSignup
8
12

More than 5 years have passed since last update.

Goでビルドしたバイナリに製品名やファイルバージョンを追加する方法

Posted at

概要

Go言語でWindowsのバイナリをビルドすると製品名やファイルバージョンなどがすべて空欄になってしまいます。
これらの値を設定してビルドする方法について記載します。

通常ビルド時

GoでWindowsのバイナリをビルドすると以下のようにexeのプロパティの詳細タブの値がすべて空欄となります。

001.png

値の設定方法

GoVersionInfo を利用することで値を設定できます。

はじめに、GoVersionInfoのパッケージをダウンロードします。

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

GOPATH にパッケージが配置されるので、パスを通しておきます。

set PATH="%GOPATH%\bin";%PATH%

Goのソースが配置されているフォルダに以下のファイルを配置します。
ファイル名は versioninfo.json 文字コードは UTF-8 にしておきます。

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": "1.0.0.0",
        "InternalName": "test",
        "LegalCopyright": "Copyright (C) 2018 会社名",
        "LegalTrademarks": "",
        "OriginalFilename": "test.exe",
        "PrivateBuild": "",
        "ProductName": "製品名",
        "ProductVersion": "1.0.0.0",
        "SpecialBuild": ""
    },
    "VarFileInfo": {
        "Translation": {
            "LangID": "0411",
            "CharsetID": "04B0"
        }
    },
    "IconPath": "",
    "ManifestPath": ""
}

Goのソースの先頭に以下の行を追加します。

test.go
//go:generate goversioninfo

以下のコマンドでビルドを行います。

set GOARCH=amd64
set GOOS=windows
go generate
go build -ldflags "-s -w" -i

ビルドに成功すると resource.syso というファイルが生成され、バイナリには製品名やバージョンが埋め込まれます。

002.png


まだ試してはいませんが、Goのソースの先頭を以下のようにするとアイコンやマニフェストも埋め込むことができるようです。
詳しくは GoVersionInfo のマニュアルを参照してみてください。

//go:generate goversioninfo -icon=icon.ico -manifest=goversioninfo.exe.manifest
8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12