none
FileVersionInfo est buggué ? RRS feed

  • Question

  • Bonjour a tous,

    Il me semblerait que la class FileVersionInfo est "boguée" (bug), elle ne donne pas la même version du fichier que sous Windows.

    Ci-dessous vous verrez la fenêtre propriété de Windows sur le fichier mshtml.dll il donne une version du fichier qui est 9.0.8112.16476

    Plus bas l'image 2 qui est un simple msgbox avec le bout de code suivant :

    Dim FileVerInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo("C:\Windows\System32\mshtml.dll")
    Msgbox(FileVerInfo.ProductVersion)

    Apres l’exécution j'ai bien la popup (le msgbox) avec la version 9.00.8112.16421, pourquoi la version n'est pas la meme que Windows ?


    J'ai voulu faire une vérification avec WMI et la Class CIM_DataFile en PowerShell

    Get-WmiObject -Class CIM_Datafile -filter "FileName='mshtml' AND Path='\\Windows\\System32\\' AND Drive='C:'"

    le résultat est bien celui que j'attends, du moins la version du fichier est la même que Windows

    Compressed : False
    Encrypted  : False
    Size       :
    Hidden     : False
    Name       : c:\windows\system32\mshtml.dll
    Readable   : True
    System     : False
    Version    : 9.0.8112.16476
    Writeable  : True
    

    J'ai fait un autre test avec les versions du Framework inferieur, c'est a dire que je suis passé de la version 4.5 a la version 4 puis 3.5 et pour finir la version 3, cela me donne une version de fichier non attendu qui est toujours la version 9.00.8112.16421 ?

    Avez vous une idée sur la chose ?


    Cordialement,

    vendredi 12 avril 2013 17:09
    Auteur de réponse

Réponses

  • Bonjour Troxsa,

    Pas vraiment d'explication, sinon que cela semble lié à FileVerInfo.FilePrivatePart, ce qui n'est pas conforme à la doc. Si on récupère les 4 infos séparément on est bien identique à l'explorateur,ici avec la version livrée avec IE10 :

    Dim FileVerInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo("C:\Windows\System32\mshtml.dll")
    ' = Explorateur
    MsgBox(FileVerInfo.FileMajorPart & "." & _
           FileVerInfo.FileMinorPart & "." & _
           FileVerInfo.FileBuildPart & "." & _
           FileVerInfo.FilePrivatePart)   ' 10.0.9200.16540
    ' <> Explorateur
    MsgBox(FileVerInfo.ProductVersion)    ' 10.00.9200.16521

    A noter aussi la différence de mise en forme entre FileVersion 10.0.9200.16521 et ProductVersion 10.00.9200.16521 ...


    Cordialement, Jacques


    • Modifié Jacques93 samedi 13 avril 2013 09:05
    • Marqué comme réponse TroxsaEditor samedi 13 avril 2013 13:55
    samedi 13 avril 2013 09:02

Toutes les réponses

  • Bonjour Troxsa,

    Pas vraiment d'explication, sinon que cela semble lié à FileVerInfo.FilePrivatePart, ce qui n'est pas conforme à la doc. Si on récupère les 4 infos séparément on est bien identique à l'explorateur,ici avec la version livrée avec IE10 :

    Dim FileVerInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo("C:\Windows\System32\mshtml.dll")
    ' = Explorateur
    MsgBox(FileVerInfo.FileMajorPart & "." & _
           FileVerInfo.FileMinorPart & "." & _
           FileVerInfo.FileBuildPart & "." & _
           FileVerInfo.FilePrivatePart)   ' 10.0.9200.16540
    ' <> Explorateur
    MsgBox(FileVerInfo.ProductVersion)    ' 10.00.9200.16521

    A noter aussi la différence de mise en forme entre FileVersion 10.0.9200.16521 et ProductVersion 10.00.9200.16521 ...


    Cordialement, Jacques


    • Modifié Jacques93 samedi 13 avril 2013 09:05
    • Marqué comme réponse TroxsaEditor samedi 13 avril 2013 13:55
    samedi 13 avril 2013 09:02
  • Bonjour Jacques

    J'ai vu pas mal de forum parlant de problème similaire et effectivement la solution de contournement est d'utiliser le code que vous avez mis ci-dessus.

    Merci pour votre aide

    J'aimerais savoir si un correctif de la part de microsoft est prévu ? si cela est bien un problème ...



    Cordialement,

    samedi 13 avril 2013 13:55
    Auteur de réponse
  • Bonjour,

    Je ne vois pas où est le problème ?

    Pour récupérer la version du fichier 9.0.8112.16421, utilisez la propriété FileVersion de la classe FileVersionInfo.
    Pour récupérer la version du produit 9.00.8112.16421, utilisez la propriété ProductVersion de la classe FileVersionInfo.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    dimanche 14 avril 2013 22:36
    Modérateur
  • Bonjour Gilles,

    Il n'y a pas de problème de zéro uniquement mais un problème de version entre les méthodes utilisée de la meme class.

    Exemple : avec le fichier mshtml.dll

    FileVerInfo.ProductVersion cela donne la version : 9.00.8112.16421

    puis avec :

    MsgBox(FileVerInfo.FileMajorPart & "." & _
           FileVerInfo.FileMinorPart & "." & _
           FileVerInfo.FileBuildPart & "." & _
           FileVerInfo.FilePrivatePart)

    la version du même fichier est : 9.0.8112.16476


    La question est pourquoi il trouve une version de fichier qui n'existe pas ou qui n'existe plus ?


    Cordialement,


    lundi 15 avril 2013 18:19
    Auteur de réponse