goversioninfo – github.com/josephspurrier/goversioninfo Index | Examples | Files | Directories

package goversioninfo

import "github.com/josephspurrier/goversioninfo"

Package goversioninfo creates a syso file which contains Microsoft Version Information and an optional icon.

Example

Code:play 

package main

import (
	"fmt"
)

func main() {
	fmt.Println("Hello world")
}

Index

Examples

Constants

const (
	Cs7ASCII       = CharsetID(0)    // Cs7ASCII:	0	0000	7-bit ASCII
	CsJIS          = CharsetID(932)  // CsJIS:	932	03A4	Japan (Shift ? JIS X-0208)
	CsKSC          = CharsetID(949)  // CsKSC:	949	03B5	Korea (Shift ? KSC 5601)
	CsBig5         = CharsetID(950)  // CsBig5:	950	03B6	Taiwan (Big5)
	CsUnicode      = CharsetID(1200) // CsUnicode:	1200	04B0	Unicode
	CsLatin2       = CharsetID(1250) // CsLatin2:	1250	04E2	Latin-2 (Eastern European)
	CsCyrillic     = CharsetID(1251) // CsCyrillic:	1251	04E3	Cyrillic
	CsMultilingual = CharsetID(1252) // CsMultilingual:	1252	04E4	Multilingual
	CsGreek        = CharsetID(1253) // CsGreek:	1253	04E5	Greek
	CsTurkish      = CharsetID(1254) // CsTurkish:	1254	04E6	Turkish
	CsHebrew       = CharsetID(1255) // CsHebrew:	1255	04E7	Hebrew
	CsArabic       = CharsetID(1256) // CsArabic:	1256	04E8	Arabic
)

CharsetID constants

const (
	LngArabic                = LangID(0x0401) // LngArabic: 0x0401 Arabic
	LngBulgarian             = LangID(0x0402) // LngBulgarian: 0x0402 Bulgarian
	LngCatalan               = LangID(0x0403) // LngCatalan: 0x0403 Catalan
	LngTraditionalChinese    = LangID(0x0404) // LngTraditionalChinese: 0x0404 Traditional Chinese
	LngCzech                 = LangID(0x0405) // LngCzech: 0x0405 Czech
	LngDanish                = LangID(0x0406) // LngDanish: 0x0406 Danish
	LngGerman                = LangID(0x0407) // LngGerman: 0x0407 German
	LngGreek                 = LangID(0x0408) // LngGreek: 0x0408 Greek
	LngUSEnglish             = LangID(0x0409) // LngUSEnglish: 0x0409 U.S. English
	LngCastilianSpanish      = LangID(0x040A) // LngCastilianSpanish: 0x040A Castilian Spanish
	LngFinnish               = LangID(0x040B) // LngFinnish: 0x040B Finnish
	LngFrench                = LangID(0x040C) // LngFrench: 0x040C French
	LngHebrew                = LangID(0x040D) // LngHebrew: 0x040D Hebrew
	LngHungarian             = LangID(0x040E) // LngHungarian: 0x040E Hungarian
	LngIcelandic             = LangID(0x040F) // LngIcelandic: 0x040F Icelandic
	LngItalian               = LangID(0x0410) // LngItalian: 0x0410 Italian
	LngJapanese              = LangID(0x0411) // LngJapanese: 0x0411 Japanese
	LngKorean                = LangID(0x0412) // LngKorean: 0x0412 Korean
	LngDutch                 = LangID(0x0413) // LngDutch: 0x0413 Dutch
	LngNorwegianBokmal       = LangID(0x0414) // LngNorwegianBokmal: 0x0414 Norwegian ? Bokmal
	LngPolish                = LangID(0x0415) // LngPolish: 0x0415 Polish
	LngPortugueseBrazil      = LangID(0x0416) // LngPortugueseBrazil: 0x0416 Portuguese (Brazil)
	LngRhaetoRomanic         = LangID(0x0417) // LngRhaetoRomanic: 0x0417 Rhaeto-Romanic
	LngRomanian              = LangID(0x0418) // LngRomanian: 0x0418 Romanian
	LngRussian               = LangID(0x0419) // LngRussian: 0x0419 Russian
	LngCroatoSerbianLatin    = LangID(0x041A) // LngCroatoSerbianLatin: 0x041A Croato-Serbian (Latin)
	LngSlovak                = LangID(0x041B) // LngSlovak: 0x041B Slovak
	LngAlbanian              = LangID(0x041C) // LngAlbanian: 0x041C Albanian
	LngSwedish               = LangID(0x041D) // LngSwedish: 0x041D Swedish
	LngThai                  = LangID(0x041E) // LngThai: 0x041E Thai
	LngTurkish               = LangID(0x041F) // LngTurkish: 0x041F Turkish
	LngUrdu                  = LangID(0x0420) // LngUrdu: 0x0420 Urdu
	LngBahasa                = LangID(0x0421) // LngBahasa: 0x0421 Bahasa
	LngSimplifiedChinese     = LangID(0x0804) // LngSimplifiedChinese: 0x0804 Simplified Chinese
	LngSwissGerman           = LangID(0x0807) // LngSwiss German: 0x0807 Swiss German
	LngUKEnglish             = LangID(0x0809) // LngUKEnglish: 0x0809 U.K. English
	LngSpanishMexico         = LangID(0x080A) // LngSpanishMexico: 0x080A Spanish (Mexico)
	LngBelgianFrench         = LangID(0x080C) // LngBelgian French: 0x080C Belgian French
	LngSwissItalian          = LangID(0x0810) // LngSwiss Italian: 0x0810 Swiss Italian
	LngBelgianDutch          = LangID(0x0813) // LngBelgian Dutch: 0x0813 Belgian Dutch
	LngNorwegianNynorsk      = LangID(0x0814) // LngNorwegianNynorsk: 0x0814 Norwegian ? Nynorsk
	LngPortuguesePortugal    = LangID(0x0816) // LngPortuguese (Portugal): 0x0816 Portuguese (Portugal)
	LngSerboCroatianCyrillic = LangID(0x081A) // LngSerboCroatianCyrillic: 0x081A Serbo-Croatian (Cyrillic)
	LngCanadianFrench        = LangID(0x0C0C) // LngCanadian French: 0x0C0C Canadian French
	LngSwissFrench           = LangID(0x100C) // LngSwiss French: 0x100C Swiss French
)

LangID constants

Types

type CharsetID

type CharsetID uint16

CharsetID must use be a character-set identifier from: https://msdn.microsoft.com/en-us/library/windows/desktop/aa381058(v=vs.85).aspx#charsetID

func (*CharsetID) UnmarshalJSON

func (cs *CharsetID) UnmarshalJSON(p []byte) error

UnmarshalJSON converts the string to a CharsetID

type FileVersion

type FileVersion struct {
	Major int
	Minor int
	Patch int
	Build int
}

FileVersion with 3 parts.

func NewFileVersion

func NewFileVersion(version string) (FileVersion, error)

NewFileVersion parses semver version string into a FileVersion object

func (FileVersion) GetVersionString

func (f FileVersion) GetVersionString() string

GetVersionString returns a string representation of the version

type FixedFileInfo

type FixedFileInfo struct {
	FileVersion    `json:"FileVersion"`
	ProductVersion FileVersion
	FileFlagsMask  string
	FileFlags      string
	FileOS         string
	FileType       string
	FileSubType    string
}

FixedFileInfo contains file characteristics - leave most of them at the defaults.

type LangID

type LangID uint16

LangID must use be a character-set identifier from: https://msdn.microsoft.com/en-us/library/windows/desktop/aa381058(v=vs.85).aspx#langID

func (*LangID) UnmarshalJSON

func (lng *LangID) UnmarshalJSON(p []byte) error

UnmarshalJSON converts the string to a LangID

type SizedReader

type SizedReader struct {
	*bytes.Buffer
}

SizedReader is a *bytes.Buffer.

func (SizedReader) Size

func (s SizedReader) Size() int64

Size returns the length of the buffer.

type StringFileInfo

type StringFileInfo struct {
	Comments         string
	CompanyName      string
	FileDescription  string
	FileVersion      string
	InternalName     string
	LegalCopyright   string
	LegalTrademarks  string
	OriginalFilename string
	PrivateBuild     string
	ProductName      string
	ProductVersion   string
	SpecialBuild     string
}

StringFileInfo is what you want to change.

type Translation

type Translation struct {
	LangID    `json:"LangID"`
	CharsetID `json:"CharsetID"`
}

Translation with langid and charsetid.

type VSFixedFileInfo

type VSFixedFileInfo struct {
	DwSignature        uint32
	DwStrucVersion     uint32
	DwFileVersionMS    uint32
	DwFileVersionLS    uint32
	DwProductVersionMS uint32
	DwProductVersionLS uint32
	DwFileFlagsMask    uint32
	DwFileFlags        uint32
	DwFileOS           uint32
	DwFileType         uint32
	DwFileSubtype      uint32
	DwFileDateMS       uint32
	DwFileDateLS       uint32
}

VSFixedFileInfo - most of these should be left at the defaults.

type VSString

type VSString struct {
	WLength      uint16
	WValueLength uint16
	WType        uint16
	SzKey        []byte
	Padding      []byte
	Value        []byte
}

VSString holds the keys and values.

type VSStringFileInfo

type VSStringFileInfo struct {
	WLength      uint16
	WValueLength uint16
	WType        uint16
	SzKey        []byte
	Padding      []byte
	Children     VSStringTable
}

VSStringFileInfo holds multiple collections of keys and values, only allows for 1 collection in this package.

type VSStringTable

type VSStringTable struct {
	WLength      uint16
	WValueLength uint16
	WType        uint16
	SzKey        []byte
	Padding      []byte
	Children     []VSString
}

VSStringTable holds a collection of string keys and values.

type VSVar

type VSVar struct {
	WLength      uint16
	WValueLength uint16
	WType        uint16
	SzKey        []byte
	Padding      []byte
	Value        uint32
}

VSVar holds the translation key.

type VSVarFileInfo

type VSVarFileInfo struct {
	WLength      uint16
	WValueLength uint16
	WType        uint16
	SzKey        []byte
	Padding      []byte
	Value        VSVar
}

VSVarFileInfo holds the translation collection of 1.

type VSVersionInfo

type VSVersionInfo struct {
	WLength      uint16
	WValueLength uint16
	WType        uint16
	SzKey        []byte
	Padding1     []byte
	Value        VSFixedFileInfo
	Padding2     []byte
	Children     VSStringFileInfo
	Children2    VSVarFileInfo
}

VSVersionInfo is the top level version container.

type VarFileInfo

type VarFileInfo struct {
	Translation `json:"Translation"`
}

VarFileInfo is the translation container.

type VersionInfo

type VersionInfo struct {
	FixedFileInfo  `json:"FixedFileInfo"`
	StringFileInfo `json:"StringFileInfo"`
	VarFileInfo    `json:"VarFileInfo"`
	Timestamp      bool
	Buffer         bytes.Buffer
	Structure      VSVersionInfo
	IconPath       string `json:"IconPath"`
	ManifestPath   string `json:"ManifestPath"`
}

VersionInfo data container

func (*VersionInfo) Build

func (v *VersionInfo) Build()

Build fills the structs with data from the config file

func (*VersionInfo) ParseJSON

func (vi *VersionInfo) ParseJSON(jsonBytes []byte) error

ParseJSON parses the given bytes as a VersionInfo JSON.

func (*VersionInfo) Walk

func (vi *VersionInfo) Walk()

Walk writes the data buffer with hexadecimal data from the structs

func (*VersionInfo) WriteGo

func (vi *VersionInfo) WriteGo(filename, packageName string) error

WriteGo creates a Go file that contains the version info so you can access it in the application

func (*VersionInfo) WriteHex

func (vi *VersionInfo) WriteHex(filename string) error

WriteHex creates a hex file for debugging version info

func (*VersionInfo) WriteSyso

func (vi *VersionInfo) WriteSyso(filename string, arch string) error

WriteSyso creates a resource file from the version info and optionally an icon. arch must be an architecture string accepted by coff.Arch, like "386" or "amd64"

Source Files

goversioninfo.go icon.go lang_cs.go structbuild.go

Directories

PathSynopsis
cmd
cmd/goversioninfo
Version
v1.5.0 (latest)
Published
Apr 2, 2025
Platform
windows/amd64
Imports
14 packages
Last checked
now

Tools for package owners.