比较FileVersionInfo以检查旧版本

问题描述:

我为Autodesk Inventor创建了一个AddIn。现在它已完成并安装在每个用户工作站上。每当我为AddIn进行更新时,用户需要运行安装程序以获取最新的更新,我希望这个过程自动化,用户总是在工作时拥有最新版本。所以在Autodesk Inventor加载过程中会发生检查。比较FileVersionInfo以检查旧版本

我会检查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 

但是,什么是正确的方式来比较这个版本号彼此?

首先,自动更新插件这种方式,你需要做两件事情:

  • 关闭发明者,因为所有加载的加载项都会有自己的DLL锁定。
  • 从Inventor Application管理关闭事件,然后启动您的加载项安装程序。

二,版本比较,你可以使用一个功能,到您的加载项,像这样的:

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 

如果他们必须始终使用最新版本,那么只需在FileVersion属性上使用字符串比较。

的版本是由两个文件和格式

FileMajorPart . FileMinorPart . FileBuildPart . FilePrivatePart 

每个属性的产品版本的可以单独进行比较,如果你比如要确保只有专业+辅修是相同。