2010-05-10 10 views
12

Fue fácil comprobar si se instaló VSTO 2005 SE simplemente llamando a MsiGetProductInfo() con el código de producto {388E4B09-3E71-4649-8921-F44A3A2954A7}, como listed in MSDN.Cómo determinar si VSTO 2010 Runtime está instalado?

¿Cuál es el código de producto para el tiempo de ejecución de VSTO 2010/4.0? ¿O hay una mejor manera de determinar si ya está instalado? Esto es para nuestro proceso de instalación.

Además, estoy tratando de descubrir lo mismo para Windows Imaging Component.

Respuesta

9

La manera más fácil es verificar el registro.

HKLM \ Microsoft \ instalar VSTO Runtime \ v4 \ Install

HKLM \ Microsoft \ instalar VSTO Runtime \ V4R \ VSTORFeature_CLR40 (esto es para las extensiones 4.0 Office)

+1

La segunda respuesta allí (con VSTORFeature_CLR40) es probablemente más correcta. Acabo de tener un escenario en el que se encontró la primera entrada de registro (HKLM \ Microsoft \ vsto runtime setup \ v4 \ Install) pero mis complementos no se cargaban, y de hecho VSTO no estaba instalado. – PandaWood

+2

¿Puede alguien explicar cómo se detecta si el VSTOR40 instalado es x86 o x64? He instalado todas las combinaciones de los tiempos de ejecución x86 y x64, y las claves mencionadas anteriormente son las únicas creadas, todo está bajo el WOW6432Nodo, lo que significa que no hay forma de determinar la 'bitness' del tiempo de ejecución instalado ... (tenga en cuenta que Office 2010 viene con sabores de 32 y 64 bits, y los procesos .net que se generan tendrán el mismo grado de bits que la instalación de Office http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/8d70d66c-fe87-4f38-b154-5804b871e153 /) – Adam

+0

He descubierto que 'VSTORFeature_' solo existe en instalaciones x64. Por favor, mira mi respuesta a continuación para instalaciones x86. –

3

El método más seguro y más limpio es todavía la comprobación de los códigos de producto, aquí están:

Para VSTO 2010 x 86, versión 10.0.31124: {41A01180-D9FD-3428-9FD6-749F4C637CBF}

Para VSTO 2010 x64, versión 10. 0,31124: {C3600AE6-93A0-3DB7-B7AA-45BD58F133B5}

Los tengo por extracción del contenido de los siguientes paquetes con 7-Zip y el análisis de la MSI con 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

Desafortunadamente las respuestas aquí hasta ahora no abarcan por completo todas las bases.

Código Producto

Esto no parece ser fiable - que estamos buscando una versión mínima, no una versión específica. Aunque el código del producto en teoría solo se supone que cambia para incrementos de versiones mayores, la versión de VSTO en mi máquina - 10.0.40303 - tiene un código de producto de {A0FE0292-D3BE-3447-80F2-72E032A54875}. Esto sugiere que Microsoft no los mantiene necesariamente estables, por lo que sugeriría que esta no es una buena opción.

Versión del archivo

Otra opción puede ser la de comprobar la presencia/versión del VSTO propias asambleas, que típicamente puede estar en% Archivos de programa% \ Archivos comunes \ Microsoft Shared \ VSTO \ 10.0. Sin embargo, yo diría que este directorio no está garantizada - el directorio real parece estar especificada en el registro, pero es evidente que esta solución es ahora no es mejor que sólo tener la versión del registro directamente ...

Registro

Así que pasar por el registro es probablemente la única opción que queda.

Por desgracia, la versión de tiempo de ejecución VSTO puede aparecer en cualquier ubicación uno de los 4 registro:

  • HKLM \ SOFTWARE \ Microsoft \ VSTO Runtime Setup \ v4 (32 bits, instalar VSTO de instalación de Office 2010)
  • HKLM \ SOFTWARE \ Microsoft \ VSTO Runtime Setup \ V4R (32 bits, VSTO instalado desde redistribuible)
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VSTO Runtime Setup \ v4 (64- poco, VSTO instala desde instalación de Office 2010)
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VSTO Runtime Setup \ V4R (64 bits, VSTO instalado desde redistribuible)

Nota: No tiene una fuente definitiva para esto: estoy reconstruyendo fragmentos de información de, por ejemplo, this blog post by Wouter van Vugt y this SO answer. Puede haber incluso más que eso.

Además, puede haber requisitos mínimos de versión, aunque sospecho que en la práctica esto sólo va a afectar a las personas que ejecutan versiones preliminares de Office 2010:

El Visual Studio 2010 Tools para el tiempo de ejecución de oficina también se envía con Microsoft Office 2010. Sin embargo, en el momento de Office 2010 RTM, el tiempo de ejecución con Office solo admite soluciones de Office que se dirigen al .NET Framework 3.5. Si su solución está orientada a .NET Framework 3.5, , puede ejecutarse si está instalado Office 2010 o si está instalado el Visual Studio 2010 Tools for Office Runtime redistributable. Si sus soluciones de oficina se dirigen a .NET Framework 4, debe redistribuir el tiempo de ejecución de Visual Studio 2010 Tools para Office (citation).

0

Las teclas varían según el SO al que está instalando. Instalé minuciosamente los .exe autónomos vsto y office 2010 y 2013 en x86 y x64. Con el fin de utilizar el registro para comprobar si se ha instalado VSTO, es necesario verificar la existencia de las siguientes claves:

para x64:

  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Configuración de tiempo de ejecución VSTO \ v4 -> Instalar

  • HKLM \ SOFTWARE \ Setup Wow6432Node \ Microsoft \ VSTO Runtime \ v4 -> CódigoProducto

para x86: Configuración

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

Editar: Lo que en realidad terminó haciendo, era verificar que el v4 existe la carpeta.

-2

Aquí el código. En el método público determinamos que VSTO está instalado desde Office o el paquete de tiempo de ejecución de VSTO. En método privado, comprobar si la versión es igual o más grande que la versión 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

Aunque se agradece el código, siempre debe tener una explicación adjunta. Esto no tiene por qué ser largo, pero se espera. – peterh

0

que necesitaba una forma de detectar esto al implementar Vstor como una aplicación en SCCM 2012. He utilizado la siguiente PowerShell script para recuperar la información de WMI.

Si la versión es 10.0.50908, se genera la salida. SCCM considera que la detección es exitosa si el script de detección devuelve cualquier valor.

$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"} 
Cuestiones relacionadas