首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileVersionInfo.GetVersionInfo替代

FileVersionInfo.GetVersionInfo替代
EN

Stack Overflow用户
提问于 2019-10-17 19:40:47
回答 1查看 413关注 0票数 0

我有一个检查更新的应用程序。为了检查更新,我需要在用户的计算机上获得文件的版本。我使用了这个代码:

代码语言:javascript
复制
if (File.Exists(dataFile))
{
    var verLocal = Version.Parse(FileVersionInfo.GetVersionInfo(dataFile).FileVersion);
    if (verSite > verLocal)
    {
        needToAdd = true;
    }
}

今天我发现FileVersionInfo.GetVersionInfo(字符串)方法可能无法获得文件版本!下面是“帮助”中的描述:

如果文件不包含版本信息,则FileVersionInfo只包含所请求文件的名称。

所以没有错误,我是这样做的:

代码语言:javascript
复制
if (File.Exists(dataFile))
{
    if (Version.TryParse(FileVersionInfo.GetVersionInfo(dataFile).FileVersion, out var verLocal))
    {
        if (verSite > verLocal)
        {
            needToAdd = true;
        }
    }
}

但是现在有一个问题--如果用户这个方法永远不会返回文件的版本,那么用户将永远不会收到更新!因此,我需要一种方法,以获得文件的版本,始终有效。

在c#中有替代这种方法的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-17 19:51:56

该版本的信息元数据实际上只适用于可执行文件或DLL。它应该在编译期间设置。我没有看到它适用于任何文字文件,图像或类似的不可执行文件。

一个相当过时的归档方法,将是旧的存档位/分配。只是为了完整的把它扔出去。

通常是为了“它变了吗?”检查,只需检查文件的大小和LastUpdated日期即可进行更改。如果您选择任何备份制造者,它将不会做更高级的检查,然后这(加上存档位作为一个选项)。这两个值中的一个不会发生变化。但这两家公司都不太可能对此感到烦恼。

检查更改的唯一100%*可靠的方法是计算一个文件哈希值。但这通常只是在安装验证时才会做的事情,而不是作为基本的备份。

*从技术上讲,这也不是100%。散列省略是一件事情,但实际上是不可能的,如果你已经检查大小和更改日期。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58439682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档