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