比较 FileVersionInfo 以检查旧版本

Comparing FileVersionInfo to check older version

我为 Autodesk Inventor 创建了一个插件。现在它已完成并安装在每个用户工作站上。每当我有 AddIn 的更新时,用户需要 运行 安装程序来获取最新更新,这个过程我想自动化,用户在工作时始终拥有最新版本。因此检查将在 Autodesk Inventor 加载期间进行。

我会检查 FileVersionInfo

我可以使用 MSDN 网站

上提供的示例代码来完成此操作
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

这会产生以下输出:

Old File: EMIA_001
Version number: 1.0.6113.27965

New File: EMIA_001
Version number: 1.0.6114.20817

但是相互比较此版本号的正确方法是什么?

如果他们必须始终使用最新版本,那么只需在 FileVersion 属性.

上使用字符串比较

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

    FileMajorPart . FileMinorPart . FileBuildPart . FilePrivatePart

如果您只想确保 Major + Minor 相同,则可以单独比较这些属性中的每一个。

首先,要以这种方式自动更新add-ins,您需要做两件事:

  • 关闭 Inventor,因为所有加载的 add-ins 都将锁定其 DLL。
  • 从 Inventor 应用程序管理关闭事件,然后启动您的 add-in 安装程序。

其次,对于版本比较,你可以使用一个函数,进入你的add-in,就像这个:

    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