Powershell 设置文件版本
Powershell Set FileVersion
我有一个带有关联模块的脚本,我想添加文件版本控制。基本上我想在签署代码时更新文件版本控制,代码将获取 PS1 文件的文件版本,然后根据所有 PSM1 文件的文件版本检查它,如果不这样做则记录错误'匹配。
也就是说,我可以使用
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion
获取信息,但我找不到有关如何设置版本的任何信息。那是因为文件版本是编译后的 EXE 和 DLL 的管辖范围,而我真的没有办法将文件版本控制添加到脚本文件中吗?或者我只是错过了什么?
I can't find an y information in how to set the version. Is that because file versions are the bailiwick of compiled EXEs and DLLs and I don't really have a way to add file versioning to script files?
您几乎已经回答了自己的问题,就是这样! :)
FileVersionInfo.GetVersionInfo()
包装对本机 api 函数 (version.dll!GetFileVersionInfo
) 的调用。
当前版本 API 支持多种文件格式,其中 PE 文件 (.exe
,.dll
) 是显而易见的。
其他格式,如 OLE 控件 (.ocx
)、屏幕保护程序 (.scr
)、驱动程序 (.drv
、.sys
)、安装程序 (.msi
、 .msu
) 和 MUI 语言包资源 (.mui
) 都可以有嵌入式版本信息,可以使用相同的库进行解析,所以它不是 只是 可执行文件。
另一方面,您的 .ps1
文件只是一个文本文件 - 操作系统不知道在其中查找和解析版本信息的内容 .
为此,您必须在文件的最后一行添加注释并将版本存储在那里,将版本信息存储在文件名中,滥用基于注释的帮助关键字字段(如 .REMARKS
例如),或将其存储在备用数据流中(假设您的 build/signing 工具链中的所有机器都是 运行 NTFS):
# write version info to an alternate data stream
Set-Content -Value "1.4.884.3" -Path script.ps1 -Stream myVersion
# read it back during build
$versionString = Get-Content script.ps1 -Stream myVersion
我有一个带有关联模块的脚本,我想添加文件版本控制。基本上我想在签署代码时更新文件版本控制,代码将获取 PS1 文件的文件版本,然后根据所有 PSM1 文件的文件版本检查它,如果不这样做则记录错误'匹配。
也就是说,我可以使用
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion
获取信息,但我找不到有关如何设置版本的任何信息。那是因为文件版本是编译后的 EXE 和 DLL 的管辖范围,而我真的没有办法将文件版本控制添加到脚本文件中吗?或者我只是错过了什么?
I can't find an y information in how to set the version. Is that because file versions are the bailiwick of compiled EXEs and DLLs and I don't really have a way to add file versioning to script files?
您几乎已经回答了自己的问题,就是这样! :)
FileVersionInfo.GetVersionInfo()
包装对本机 api 函数 (version.dll!GetFileVersionInfo
) 的调用。
当前版本 API 支持多种文件格式,其中 PE 文件 (.exe
,.dll
) 是显而易见的。
其他格式,如 OLE 控件 (.ocx
)、屏幕保护程序 (.scr
)、驱动程序 (.drv
、.sys
)、安装程序 (.msi
、 .msu
) 和 MUI 语言包资源 (.mui
) 都可以有嵌入式版本信息,可以使用相同的库进行解析,所以它不是 只是 可执行文件。
另一方面,您的 .ps1
文件只是一个文本文件 - 操作系统不知道在其中查找和解析版本信息的内容 .
为此,您必须在文件的最后一行添加注释并将版本存储在那里,将版本信息存储在文件名中,滥用基于注释的帮助关键字字段(如 .REMARKS
例如),或将其存储在备用数据流中(假设您的 build/signing 工具链中的所有机器都是 运行 NTFS):
# write version info to an alternate data stream
Set-Content -Value "1.4.884.3" -Path script.ps1 -Stream myVersion
# read it back during build
$versionString = Get-Content script.ps1 -Stream myVersion