将版本号添加到 Windows 中的通用文件
Posted
技术标签:
【中文标题】将版本号添加到 Windows 中的通用文件【英文标题】:Add Version number to a generic file in Windows 【发布时间】:2020-02-21 00:16:03 【问题描述】:上次编辑:版本号无法添加到 Windows 中的通用文件中。
Windows 中的版本控制来自附加到二进制可执行文件(如 .EXE 或 .DLL)的 VERSIONINFO 资源。此资源不能附加到任何任意文件,并且它不是任何备用数据流的一部分。
我原以为版本信息存储在备用数据流中,但事实并非如此。
有没有办法将程序版本号添加到 Windows 中不是可执行文件或 dll 的文件的元数据中?我们有一个 linux 应用程序。将存储在 Windows 服务器上,并在版本更改时复制到 Linux 计算机。
编辑:我想将版本信息添加到文件中,该文件保存在文件的备用文件流中。
我想将版本号写入元数据,以便可以使用类似于以下的方法从程序中读取它:
string fullPath = "folder_name" + "\\" + "linux_app_name";
if (File.Exists(fullPath))
FileAttributes fileAttributes = File.GetAttributes(fullPath);
FileVersionInfo verInfo = FileVersionInfo.GetVersionInfo(fullPath);
// todo: add version info to the file.
textBox1.AppendText("File name:\t" + Path.GetFileName(verInfo.FileName) + '\n');
textBox1.AppendText("Version Info:\t");
if (verInfo.FileVersion != null)
textBox1.AppendText(verInfo.FileVersion);
else
textBox1.AppendText("No Version info.");
提前感谢您的任何回复。
【问题讨论】:
不清楚:你是在windows还是linux上?据我所知,在 Windows 上,除了可执行文件之外,没有这样的元数据。 docs.microsoft.com/windows/win32/debug/pe-format & en.wikipedia.org/wiki/Portable_Executable 该程序是一个 Linux 文件,它不是任何类型的 PE。此文件存储在 Windows 文件夹中。我想在保存版本信息的备用文件流中添加一个版本。 因此您需要使用数据库或关联的描述文件(如[FilenameWithExtension].meta
)并处理此行为。
这有帮助吗? ***.com/questions/604960/…
感谢您的回复。我正在寻找打开备用文件流并写入版本号。 Klaus G. 共享的链接显示了这种方法并且它有效。我将研究添加版本控制的结构。
【参考方案1】:
我发布此答案以防其他人正在寻找一种方法将版本控制添加到 Windows 中不是 Windows 程序文件的任意文件。
你不能。
Windows 中的版本控制来自附加到二进制可执行文件(如 .EXE 或 .DLL)的 VERSIONINFO 资源。此资源不能附加到任何任意文件,并且它不是任何备用数据流的一部分。
【讨论】:
以上是关于将版本号添加到 Windows 中的通用文件的主要内容,如果未能解决你的问题,请参考以下文章
如何将管道中的版本号添加到 K6-InfluxDB-Grafana 堆栈中,以便在 grafana 中我们也可以根据版本号过滤结果