Une façon de vérifier la version d'Office installée serait de vérifier le fichier InstallRoot
les clés de registre pour les applications Office qui vous intéressent.
Par exemple, si vous souhaitez vérifier si Word 2007 est installé, vous devez vérifier la présence de la clé de registre suivante :
HKLM\Software\Microsoft\Office\12.0\Word\InstallRoot::Path
Cette entrée contient le chemin d'accès à l'exécutable.
Remplacez 12.0 (pour Office 2007) par le numéro de version correspondant :
Office 97 - 7.0
Office 98 - 8.0
Office 2000 - 9.0
Office XP - 10.0
Office 2003 - 11.0
Office 2007 - 12.0
Office 2010 - 14.0 (sic!)
Office 2013 - 15.0
Office 2016 - 16.0
Office 2019 - 16.0 (sic!)
Les autres applications ont des touches similaires :
HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot::Path
HKLM\Software\Microsoft\Office\12.0\PowerPoint\InstallRoot::Path
Vous pouvez aussi vérifier le chemin racine commun à toutes les applications :
HKLM\Software\Microsoft\Office\12.0\Common\InstallRoot::Path
Une autre option, sans utiliser de clés de registre spécifiques, serait d'interroger la base de données MSI à l'aide de la fonction MSIEnumProducts
API comme décrit ici .
Par ailleurs, les installations parallèles de différentes versions d'Office ne sont pas officiellement prises en charge par Microsoft. Elles fonctionnent en quelque sorte, mais vous risquez d'obtenir des effets indésirables et des incohérences.
Mise à jour : Office 2019 et Office 365
À partir d'Office 2019, les configurations basées sur les MSI ne sont plus disponibles, le Click-To-Run est la seule façon de déployer Office maintenant. Parallèlement à ce changement vers la mise à jour régulière d'Office 365, les numéros de version majeurs/mineurs d'Office ne sont plus mis à jour (du moins pour le moment). Cela signifie que, même pour Office 2019, la valeur utilisée dans les clés de registre et la valeur renvoyée par le programme Application.Version
(par exemple, dans Word) est toujours 16.0
.
Pour l'instant, il n'existe aucun moyen documenté de distinguer l'Office 2016 de l'Office 2019. Un indice pourrait être la version du fichier winword.exe ; cependant, cette version est également incrémentée pour les versions d'Office 2016 patchées (voir le commentaire de @antonio ci-dessous).
Si vous devez faire une distinction entre les versions d'Office, par exemple pour vous assurer qu'une certaine fonctionnalité est présente ou qu'une version minimale d'Office est installée, le meilleur moyen est probablement de regarder la version du fichier de l'une des principales applications Office :
// Using the file path to winword.exe
// Retrieve the path e.g. from the InstallRoot Registry key
var fileVersionInfo = FileVersionInfo.GetVersionInfo(@"C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE");
var version = new Version(fileVersionInfo.FileVersion);
// On a running instance using the `Process` class
var process = Process.GetProcessesByName("winword").First();
string fileVersionInfo = process.MainModule.FileVersionInfo.FileVersion;
var version = Version(fileVersionInfo);
La version du fichier d'Office 2019 est 16.0.10730.20102, donc si vous voyez quelque chose de plus que cela, vous avez affaire à Office 2019 ou à une version actuelle d'Office 365.
0 votes
stackoverflow.com/questions/2914643/
0 votes
@Mandelbrot : Cela me dit seulement à quelle version je fais référence... mais c'est un MSI que j'écris, donc pas de telles références ici !
0 votes
Ah, bon point. C'est ma faute.
0 votes
Voulez-vous le découvrir en utilisant du code C# ou à partir d'un installateur MSI ?
0 votes
C'est un projet d'installation VS, et j'ai un projet d'installation (C#), qui est l'endroit où j'essaie de le faire.