Powershell设置FileVersion

时间:2018-11-04 18:54:36

标签: powershell versioning

我有一个包含相关模块的脚本,我想添加文件版本控制。基本上,我想在对代码签名时更新文件版本,该代码将获取PS1文件的文件版本,然后对照所有PSM1文件的文件版本进行检查,如果不匹配,则记录错误。

也就是说,我可以使用

[System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion

获取信息,但是我找不到有关如何设置版本的信息。那是因为文件版本是编译后的EXE和DLL的中间产物,而我真的没有办法向脚本文件添加文件版本控制吗?还是我只是想念什么?

1 个答案:

答案 0 :(得分:3)

  

我找不到有关如何设置版本的信息。 是因为文件版本是已编译的EXE和DLL的重要体现,而我真的没有办法向脚本文件添加文件版本控制吗?

您几乎已经回答了自己的问题,就是这样! :)

FileVersionInfo.GetVersionInfo()包装对本地api函数(version.dll!GetFileVersionInfo)的调用。

当前版本的API版本支持多种文件格式,其中PE文件(.exe.dll)是显而易见的格式。

其他格式,例如OLE控件(.ocx,屏幕保护程序(.scr),驱动程序(.drv.sys),安装程序(.msi,{{ 1}}}和MUI语言包资源(.msu)都可以具有可以使用同一库进行解析的嵌入式版本信息,因此它不是 just 可执行文件。

另一方面,

您的.mui文件只是一个文本文件-操作系统不知道要查找和解析版本信息的内容在何处

为此,您必须在文件的最后一行添加注释,然后在其中存储版本,在文件名中存储版本信息,滥用基于注释的帮助关键字字段(例如{{1 }}),或将其存储在备用数据流中(假设您的构建/签名工具链中的所有计算机都在运行NTFS):

.ps1