2010-05-10 5 views
12

Il était facile de vérifier si VSTO 2005 SE était installé en appelant simplement MsiGetProductInfo() avec le code produit {388E4B09-3E71-4649-8921-F44A3A2954A7}, sous la forme listed in MSDN.Comment déterminer si le moteur d'exécution de VSTO 2010 est installé?

Quel est le code produit de l'environnement d'exécution VSTO 2010/4.0? Ou y a-t-il un meilleur moyen de déterminer s'il est déjà installé? Ceci est pour notre processus d'installation.

En outre, j'essaie de comprendre la même chose pour Windows Imaging Component.

Répondre

9

Le moyen le plus simple est de vérifier le registre.

HKLM \ Microsoft \ vsto configuration d'exécution \ v4 \ Install

HKLM \ setup Microsoft \ VSTO Runtime \ V4R \ VSTORFeature_CLR40 (ceci est pour les 4.0 extensions de bureau)

+1

La 2ème réponse ici (avec VSTORFeature_CLR40) est probablement plus correcte. Je viens d'avoir un scénario où la première entrée de registre (HKLM \ Microsoft \ vsto runtime setup \ v4 \ Install) a été trouvée mais mes addins ne se chargeraient pas - et en fait VSTO n'a pas été installé. – PandaWood

+2

Quelqu'un peut-il élaborer sur la façon dont on peut détecter si le VSTOR40 installé est x86 ou x64? J'ai installé toutes les combinaisons des runtimes x86 et x64, et les clés mentionnées ci-dessus sont les seules jamais créées - tout est sous le WOW6432Node - ce qui signifie qu'il n'y a aucun moyen de déterminer la «bitness» du runtime installé ... Notez qu'Office 2010 est disponible en versions 32 et 64 bits, et que les processus .net générés seront du même type que l'installation d'Office http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/8d70d66c-fe87-4f38-b154-5804b871e153 /) – Adam

+0

J'ai découvert que 'VSTORFeature_' n'existe que dans les installations x64. S'il vous plaît voir ma réponse ci-dessous pour les installations x86. –

3

Le plus sûr et plus propre méthode est encore vérifier les codes de produit, ils sont ici:

Pour VSTO 2010 x86, la version 10.0.31124: {41A01180-D9FD-3428-9FD6-749F4C637CBF}

Pour VSTO 2010 x64, la version 10. 0,31124: {C3600AE6-93A0-3DB7-B7AA-45BD58F133B5}

Je les ai par extraction le contenu des paquets suivants avec 7-Zip et analyse de la MSIs avec Orca:

http://download.microsoft.com/download/F/3/9/F395E3C2-28A0-4F0D-9E20-FF4D1ADB08D8/vstor40_x86.exe

http://download.microsoft.com/download/F/3/9/F395E3C2-28A0-4F0D-9E20-FF4D1ADB08D8/vstor40_x64.exe

14

Malheureusement les réponses ici ne couvrent pas tout à fait toutes les bases.

Code produit

Cela ne semble pas être fiable - nous sommes à la recherche d'une version minimale, pas une version spécifique. Bien que le code de produit ne soit en théorie supposé changer que pour les versions majeures, la version de VSTO sur ma machine - 10.0.40303 - a un code produit de {A0FE0292-D3BE-3447-80F2-72E032A54875}. Cela suggère que Microsoft ne les maintient pas nécessairement stables, donc je suggère que ce n'est pas une bonne option.

Version du fichier

Une autre option peut être de vérifier la présence/version du VSTO eux-mêmes assemblées, qui peuvent généralement être en% PROGRAM FILES% \ Common Files \ Microsoft Shared \ VSTO \ 10.0. Cependant, je dirais que ce répertoire est pas garanti - le répertoire réel semble être spécifié dans le Registre, mais évidemment cette solution est maintenant pas mieux que de simplement obtenir la version du registre directement ...

Registre

Le passage par le registre est probablement la seule option qui reste.

Malheureusement, la version d'exécution VSTO peut apparaître dans l'une quelconque des 4 emplacements de Registre:

  • HKLM \ SOFTWARE \ Microsoft \ VSTO Runtime Setup \ v4 (32 bits, VSTO installé à partir de l'installation d'Office 2010)
  • HKLM \ SOFTWARE \ Microsoft \ VSTO Runtime Setup \ V4R (32-bit, VSTO installé de redistributable)
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VSTO Runtime Setup \ v4 (64- bit, VSTO installé à partir installation d'Office 2010)
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VSTO Runtime Setup \ V4R (64 bits, VSTO installé à partir redistribuable)

Note: Je n'ai pas une source définitive pour cela - je suis en train de concocter des bribes d'informations, par exemple, this blog post by Wouter van Vugt et this SO answer. Il peut y avoir plus que cela.

En outre, il peut y avoir des exigences de version minimale, même si je pense que, dans la pratique, cela ne va affecter les personnes exécutant des versions préliminaires de Office 2010:

Visual Studio 2010 Outils pour Office Runtime est également livré avec Microsoft Office 2010. Toutefois, au moment d'Office 2010 RTM, le runtime avec Office prend uniquement en charge les solutions Office qui ciblent le .NET Framework 3.5. Si votre solution cible le .NET Framework 3.5, , il peut être exécuté si Office 2010 est installé ou si le composant logiciel redistribuable 2010 Tools for Office Runtime de Visual Studio est installé. Si vos solutions Office ciblent le .NET Framework 4, vous devez redistribuer l'environnement d'exécution de Visual Studio 2010 Tools pour Office (citation).

0

Les clés varient en fonction du système d'exploitation que vous installez. J'ai minutieusement installé le vsto autonome et le bureau 2010 et 2013 .exe en x86 et x64. Pour utiliser le registre pour vérifier si VSTO est installé, vous devez vérifier l'existence des clés suivantes:

pour x64:

  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VSTO Runtime Configuration \ v4 -> Installer

  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VSTO Runtime Setup \ v4 -> ProductCode

pour x86:

  • HKLM \ SOFTWARE \ Microsoft \ VSTO Runtime Configuration -> InstallerPath

Edit: Ce que j'ai fini par faire, était de vérifier que le v4 dossier existe.

-2

Code ici. Dans la méthode publique, nous déterminons que VSTO est installé à partir du package d'exécution Office ou VSTO. Dans méthode privée, vérifier si la version est égale ou plus grande que la version VSTO2010

public static bool CheckVSTO2010 () { 
 
     string regFragment = IntPtr.Size == 8 ? "\\Wow6432Node\\" : "\\"; 
 
     string regVSTO = string.Format(@"SOFTWARE{0}Microsoft\VSTO Runtime Setup\", regFragment); 
 
     return CheckVSTOVersion(regVSTO + "v4\\") || CheckVSTOVersion(regVSTO + "v4R\\"); 
 
    } 
 

 

 
    private static bool CheckVSTOVersion (string keyPath) { 
 
     using (var key = Registry.LocalMachine.OpenSubKey(keyPath)) { 
 
      //Not installed 
 
      if (key == null) { 
 
       return false; 
 
      } 
 
      var releaseKey = key.GetValue("Version"); 
 
      if (releaseKey != null && !string.IsNullOrEmpty(releaseKey.ToString())) { 
 
       var version = new Version(releaseKey.ToString()); 
 
       return version.Major >= 10 && version.Build >= 40820; 
 
      } 
 
     } 
 
     return false; 
 
    }

+2

Bien que le code soit apprécié, il doit toujours être accompagné d'une explication. Cela ne doit pas être long, mais c'est prévu. – peterh

0

je besoin d'un moyen de détecter ce lors du déploiement VSTOR comme une application dans SCCM 2012. J'ai utilisé le PowerShell suivant script pour récupérer les informations de WMI.

Si la version est 10.0.50908, la sortie est générée. SCCM considère que la détection est réussie si le script de détection renvoie une valeur.

$VstorVersion = Get-WmiObject -Query "select ProductVersion from SMS_InstalledSoftware where ARPDisplayName = 'Microsoft Visual Studio 2010 Tools for Office Runtime (x64)'" -NameSpace "root\cimv2\sms" 
if ($VstorVersion.ProductVersion -ge '10.0.50908') {Write-Host "Found"} 
Questions connexes