2016-09-27 4 views
0

Я создал AddIn для Autodesk Inventor. Теперь он завершен и установлен на каждой рабочей станции пользователя. Всякий раз, когда у меня есть обновление для AddIn, пользователю необходимо запустить установщик для получения последнего обновления, этот процесс я бы хотел автоматизировать, чтобы пользователь ALWAYS имел последнюю версию при работе. Таким образом, проверка будет происходить во время загрузки 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

Во-первых, для автоматического обновления надстроек таким образом, вы нужно сделать 2 вещи:

  • Закрыть Inventor, так как все загруженные надстройки будут иметь свои библиотеки DLL заблокированные.
  • Управление закрытым событием из приложения Inventor, а затем запустите установщик надстройки.

Во-вторых, для сравнения версии, вы можете использовать функцию, в свою надстройку, как это:

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 

Каждое из этих свойств можно сравнить по отдельности, если вы, например, хотите, чтобы убедиться, что только что Major + Minor являются одна и та же.