8

Tengo una instalación de InstallShield que usa acciones personalizadas que dependen de Visual C++ Runtime 8.0 sp1. En el pasado, pude instalar el tiempo de ejecución utilizando el módulo de combinación proporcionado por Microsoft con Visual Studio. Según la forma en que la instalación de Visual C++ Runtime 8.0 sp1 side-by-side funciona en Vista, el tiempo de ejecución no puede utilizarse hasta la secuencia de confirmación de la instalación.¿Cómo puedo determinar mediante programación si está instalado Visual C++ Runtime 8.0?

Esto significa que debo mover la ejecución de mis acciones personalizadas a la secuencia de confirmación (no es deseable, ya que la instalación no puede revertirse durante esta secuencia si algo sale mal) o instalar Visual C++ Runtime antes de instalar usando un prerrequisito InstallShield.

Preferiría instalar Visual C++ Runtime como un requisito previo, pero un requisito previo para esto no lo proporciona InstallShield, así que tuve que escribir el mío. Pude averiguar cómo configurar el requisito previo para instalar el tiempo de ejecución, pero no sé cómo determinar si ya está instalado. ¿Existe una clave de registro o una versión de archivo que pueda verificar para determinar esto?

+0

Para cualquiera que intente detectar Visual C++ 2010 runtime, puede encontrar buenas instrucciones aquí: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx – ephere

Respuesta

10

Encontré entradas de blog que describen detectar Visual C++ Runtime 8.0 y Visual C++ Runtime 8.1. Básicamente, puede usar la Interfaz de automatización MSI para buscar los códigos de producto para cada uno de los tiempos de ejecución.

También puede buscar la HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductCode], donde [ProductCode] es el código de producto para el tiempo de ejecución que está tratando de detectar (por ejemplo. {7299052b- 02a4-4627-81f2-1818da5d550d} es el código de producto para la versión x86 del tiempo de ejecución de 8.0 sp1).

Estos métodos solo funcionan para detectar si el paquete redistribuible de tiempo de ejecución está instalado; es posible que el tiempo de ejecución esté instalado incluso si estos métodos no lo indican (por ejemplo, si se instaló como un módulo de fusión en lugar de usar el redistribuible), pero no debería doler nada instalar el paquete redistribuible en este caso .

Cuestiones relacionadas