2016-09-27 120 views
0

我爲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 

但是,什麼是正確的方式來比較這個版本號彼此?

回答

1

首先,自動更新插件這種方式,你需要做兩件事情:

  • 關閉發明者,因爲所有加載的加載項都會有自己的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 
1

如果他們必須始終使用最新版本,那麼只需在FileVersion屬性上使用字符串比較。

的版本是由兩個文件和格式

FileMajorPart . FileMinorPart . FileBuildPart . FilePrivatePart 

每個屬性的產品版本的可以單獨進行比較,如果你比如要確保只有專業+輔修是相同。