【发布时间】: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)并处理此行为。 -
感谢您的回复。我正在寻找打开备用文件流并写入版本号。 Klaus G. 共享的链接显示了这种方法并且它有效。我将研究添加版本控制的结构。