我有一个包含相关模块的脚本,我想添加文件版本控制。基本上,我想在对代码签名时更新文件版本,该代码将获取PS1文件的文件版本,然后对照所有PSM1文件的文件版本进行检查,如果不匹配,则记录错误。
也就是说,我可以使用
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion
获取信息,但是我找不到有关如何设置版本的信息。那是因为文件版本是编译后的EXE和DLL的中间产物,而我真的没有办法向脚本文件添加文件版本控制吗?还是我只是想念什么?
答案 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