首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较FileVersionInfo以检查旧版本

比较FileVersionInfo以检查旧版本
EN

Stack Overflow用户
提问于 2016-09-27 10:03:54
回答 2查看 1.2K关注 0票数 0

我为Autodesk Inventor创建了一个AddIn。现在它已经完成并安装在每个用户工作站上。每当我对AddIn进行更新时,用户需要运行安装程序才能获得最新的更新,这个过程是我想要自动化的,用户在工作时总是拥有最新的版本。因此,检查将在Autodesk Inventor加载过程中进行。

我会检查FileVersionInfo

我可以使用在MSDN (https://msdn.microsoft.com/en-us/library/system.diagnostics.fileversioninfo.fileversion(v=vs.110%29.aspx)website )上提供的示例代码来完成这一任务。

代码语言:javascript
复制
Public Shared Sub Main(ByVal args() As String)
    ' Get the file version for the notepad.
    ' Use either of the following two commands.
    FileVersionInfo.GetVersionInfo(Path.Combine(Environment.SystemDirectory, "Notepad.exe"))
    Dim myFileVersionInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Environment.SystemDirectory + "\Notepad.exe")


    ' Print the file name and version number.
    Console.WriteLine("File: " + myFileVersionInfo.FileDescription + vbLf + "Version number: " + myFileVersionInfo.FileVersion)

End Sub

这导致了这一产出:

代码语言:javascript
复制
Old File: EMIA_001
Version number: 1.0.6113.27965

New File: EMIA_001
Version number: 1.0.6114.20817

但是,比较这个版本号的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 16:39:20

首先,要以这种方式自动更新外接程序,您需要做两件事:

  • 关闭Inventor,因为所有加载的外接程序都将锁定它们的DLL。
  • 管理Inventor应用程序的关闭事件,然后启动外接程序安装程序。

其次,对于版本比较,您可以在外接程序中使用一个函数,如下面这样:

代码语言:javascript
复制
    Private Function isUpToDate() As Boolean

        Dim UpToDate As Boolean = True

        Dim FileVersionInfo_LocalDLL As FileVersionInfo = FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly.Location)
        Dim FileVersionInfo_GlobalDLL As FileVersionInfo = FileVersionInfo.GetVersionInfo("YourGlobalDllFullFileName")

        If String.Compare(FileVersionInfo_LocalDLL.FileVersion, FileVersionInfo_GlobalDLL.FileVersion) < 0 Then
            UpToDate = False
        End If

        Return UpToDate
    End Function
票数 1
EN

Stack Overflow用户

发布于 2016-09-27 10:14:24

如果必须始终使用最新版本,那么只需对FileVersion属性使用字符串比较即可。

版本由文件和产品版本的格式组成

代码语言:javascript
复制
    FileMajorPart . FileMinorPart . FileBuildPart . FilePrivatePart

这些属性中的每一个都可以单独进行比较,例如,如果您只想确保主+小调是相同的。

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

https://stackoverflow.com/questions/39721793

复制
相关文章

相似问题

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