2010-06-08 13 views
1

Comment trouver la version d'une application installée, en utilisant C#. Existe-t-il un moyen de connaître l'identifiant de composant de l'application?Comment trouver la version d'une application installée en utilisant C#

EDIT: J'ai besoin d'obtenir la version d'une application déjà installée. Ceci est nécessaire pour générer le rapport de diagnostic sur la machine de l'utilisateur.

Exemple: La version d'Outlook 2007 est installé sur la machine d'un utilisateur

+1

Voulez-vous que la version de l'application en cours d'exécution ou d'une autre application qui est en de votre programme? –

+0

oui, s'il vous plaît regardez l'EDIT en question –

Répondre

1
FileVersionInfo.GetVersionInfo("some.dll"); 
+0

Cette approche nous avons trouvé la DLL (s) copiée par l'installateur de l'application/mise à jour à l'application et trouver la version de dll. –

2

Si c'est des ensembles que vous êtes après:

Pour le montage actuel:

Assembly.GetExecutingAssembly().GetName().Version

Remplacer l'Assemblée .GetExecutingAssembly() avec une instance d'assembly obtenue par d'autres moyens pour déterminer sa version.

Une façon serait:

Assemblée de l'Assemblée = Assembly.LoadFrom ("something.dll");

Il renvoie la valeur de l'attribut AssemblyVersion.

0

Il n'y a pas de méthode unifiée pour toutes les applications, j'en ai peur. Mais pour l'application MS Office, vous pouvez obtenir une version via les objets COM.

Désolé, je n'ai pas de perspectives sur mon ordinateur, donc je ne peux pas l'essayer avec oulook. Mais avec Excel et Word, il peut être fait comme ça:

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); 
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); 
Console.WriteLine("Excel: Version-" + excelApp.Version + " Build-" + excelApp.Build); 
Console.WriteLine("Word: Version-" + wordApp.Version + " Build-" + wordApp.Build); 

Je pense que la version d'obtenir d'autres applications MS sera tout à fait la même chose. Bonne chance.

PS. Ne pas oublier d'appeler Quitter() à la fin et de libérer des objets com via Marshal.ReleaseComObject() méthode comme

Marshal.ReleaseComObject(excelApp); 
Marshal.ReleaseComObject(wordApp); 
Questions connexes