将版本号添加到 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 中我们也可以根据版本号过滤结果

如何查看python的当前版本号

windows下隐藏HTTP 头文件中nginx的版本号

通用:版本号位移例程[关闭]

如何将 MS Windows 操作系统版本号转换为 .NET 中的产品名称?

在windows7上安装mongodb选择哪个版本号