windows下goversioninfo 如何使用
时间: 2024-01-20 16:03:10 浏览: 23
GoVersionInfo 是一个 Go 语言库,用于生成 Windows PE 文件的版本信息。它可以帮助您创建包括文件版本、公司名称、版权信息等在内的版本信息资源。
使用 GoVersionInfo 库,您需要按照以下步骤操作:
1. 安装 GoVersionInfo 库。您可以使用以下命令安装:
```
go get github.com/josephspurrier/goversioninfo/...
```
这将安装 GoVersionInfo 库及其依赖项。
2. 创建一个版本信息文件。版本信息文件是一个 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": {
"CompanyName": "My Company",
"FileDescription": "My Application",
"FileVersion": "1.0.0.0",
"InternalName": "MyApp.exe",
"LegalCopyright": "Copyright (C) My Company",
"OriginalFilename": "MyApp.exe",
"ProductName": "My Application",
"ProductVersion": "1.0.0.0"
},
"VarFileInfo": {
"Translation": {
"LangID": "0409",
"CharsetID": "04b0"
}
}
}
```
这个文件包含了文件的版本信息、公司信息等。您需要根据自己的情况修改其中的字段值。
3. 创建一个 Go 文件,用于生成版本信息资源。以下是一个示例文件:
```go
package main
import (
"github.com/josephspurrier/goversioninfo"
)
func main() {
vi := goversioninfo.NewVersionInfo()
vi.FixedFileInfo.FileVersion.Major = 1
vi.FixedFileInfo.FileVersion.Minor = 0
vi.FixedFileInfo.FileVersion.Patch = 0
vi.FixedFileInfo.FileVersion.Build = 0
vi.FixedFileInfo.ProductVersion.Major = 1
vi.FixedFileInfo.ProductVersion.Minor = 0
vi.FixedFileInfo.ProductVersion.Patch = 0
vi.FixedFileInfo.ProductVersion.Build = 0
vi.StringFileInfo.CompanyName = "My Company"
vi.StringFileInfo.FileDescription = "My Application"
vi.StringFileInfo.FileVersion = "1.0.0.0"
vi.StringFileInfo.InternalName = "MyApp.exe"
vi.StringFileInfo.LegalCopyright = "Copyright (C) My Company"
vi.StringFileInfo.OriginalFilename = "MyApp.exe"
vi.StringFileInfo.ProductName = "My Application"
vi.StringFileInfo.ProductVersion = "1.0.0.0"
vi.VarFileInfo.Translation.LangID = goversioninfo.LngChinese
vi.VarFileInfo.Translation.CharsetID = goversioninfo.CsUnicode
err := vi.Build()
if err != nil {
panic(err)
}
}
```
这个文件创建了一个 `VersionInfo` 对象,并设置了它的属性值。其中的值根据您的版本信息文件进行设置。最后,调用 `Build()` 方法生成版本信息资源。
4. 运行程序。运行程序后,它将生成一个名为 `versioninfo.syso` 的文件,它包含了您的版本信息资源。
5. 将 `versioninfo.syso` 文件添加到您的 Go 项目中,并在编译时包含它。例如,使用以下命令编译:
```
go build -ldflags="-H windowsgui -linkmode internal" -o MyApp.exe -v
```
这个命令使用 `-ldflags` 参数指定了编译参数,包括窗口模式和链接模式。使用 `-v` 参数可以输出编译过程中的详细信息。
希望这些步骤能够帮助您使用 GoVersionInfo 库生成 Windows PE 文件的版本信息。