我有一个检查更新的应用程序。为了检查更新,我需要在用户的计算机上获得文件的版本。我使用了这个代码:
if (File.Exists(dataFile))
{
var verLocal = Version.Parse(FileVersionInfo.GetVersionInfo(dataFile).FileVersion);
if (verSite > verLocal)
{
needToAdd = true;
}
}今天我发现FileVersionInfo.GetVersionInfo(字符串)方法可能无法获得文件版本!下面是“帮助”中的描述:
如果文件不包含版本信息,则FileVersionInfo只包含所请求文件的名称。
所以没有错误,我是这样做的:
if (File.Exists(dataFile))
{
if (Version.TryParse(FileVersionInfo.GetVersionInfo(dataFile).FileVersion, out var verLocal))
{
if (verSite > verLocal)
{
needToAdd = true;
}
}
}但是现在有一个问题--如果用户这个方法永远不会返回文件的版本,那么用户将永远不会收到更新!因此,我需要一种方法,以获得文件的版本,始终有效。
在c#中有替代这种方法的方法吗?
发布于 2019-10-17 19:51:56
该版本的信息元数据实际上只适用于可执行文件或DLL。它应该在编译期间设置。我没有看到它适用于任何文字文件,图像或类似的不可执行文件。
一个相当过时的归档方法,将是旧的存档位/分配。只是为了完整的把它扔出去。
通常是为了“它变了吗?”检查,只需检查文件的大小和LastUpdated日期即可进行更改。如果您选择任何备份制造者,它将不会做更高级的检查,然后这(加上存档位作为一个选项)。这两个值中的一个不会发生变化。但这两家公司都不太可能对此感到烦恼。
检查更改的唯一100%*可靠的方法是计算一个文件哈希值。但这通常只是在安装验证时才会做的事情,而不是作为基本的备份。
*从技术上讲,这也不是100%。散列省略是一件事情,但实际上是不可能的,如果你已经检查大小和更改日期。
https://stackoverflow.com/questions/58439682
复制相似问题