2016-09-27 9 views
0

J'ai créé un AddIn pour Autodesk Inventor. Maintenant, il est terminé et installé sur chaque poste de travail utilisateur. Chaque fois que j'ai une mise à jour pour l'AddIn, l'utilisateur doit exécuter le programme d'installation pour obtenir la dernière mise à jour, ce processus que je voudrais automatiser que l'utilisateur a TOUJOURS la dernière version lorsqu'il travaille. La vérification a donc eu lieu pendant le chargement d'Autodesk Inventor.Comparaison de FileVersionInfo pour vérifier l'ancienne version

Je vais vérifier la FileVersionInfo

je peux le faire en utilisant ce code exemple fourni sur le site 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 

Il en résulte cette sortie:

Old File: EMIA_001 
Version number: 1.0.6113.27965 

New File: EMIA_001 
Version number: 1.0.6114.20817 

Mais quelle est la bon moyen de comparer ce numéro de version les uns aux autres?

Répondre

1

En premier lieu, à mettre à jour automatiquement les compléments de cette façon, a besoin de vous faire 2 choses:

  • Fermer Inventeur, puisque tous les compléments chargés auront leurs DLL verrouillés.
  • Gérer l'événement de fermeture à partir de l'application Inventor, puis lancer votre programme d'installation du complément.

En second lieu, pour la comparaison de version, vous pouvez utiliser une fonction, dans votre complément, comme celui-ci:

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

Si elles doivent toujours utiliser la dernière version, utilisez simplement la comparaison de chaînes sur la propriété FileVersion.

Les versions sont composées à la fois un fichier et une version de produit du format

FileMajorPart . FileMinorPart . FileBuildPart . FilePrivatePart 

Chacune de ces propriétés peuvent être comparées individuellement si par exemple vous voulez vous assurer que le major + Minor sont les même.