x64 visual microsoft visual-c++ installation redistributable

visual c++ - visual - ¿Cómo puedo detectar si necesito instalar VCRedist?



microsoft visual c++ 2010 redistributable package(x64) windows 10 (4)

Tengo una pregunta muy similar a esta, pero la respuesta no funciona para mí.

El software del que estoy manteniendo la configuración depende de VC ++ 2008 (SP1, precisamente), así que necesito encontrar una solución para instalar VCRedist si aún no está instalado. Entiendo que la forma correcta sería construir msi con módulos de fusión, pero no está en mis manos.

La respuesta de la pregunta duplicada a la que me refiero (la aceptada) no me funciona porque cada versión pequeña (por ejemplo, 9.0.30729.01 vs 9.0.30729.17) tiene GUID adecuados, que no puedo adivinar ni predecir para versiones futuras . Además, creo que esto no detectaría Visual Studios y, por lo tanto, instalaría innecesariamente el paquete VCRedist cuando ya está en una máquina de desarrollo. No quiero molestar a nadie con esto, ciertamente no a alguien que ya tiene un DevStudio instalado.

Ahora, otra respuesta dice que debería buscar en la carpeta WinSxs como $WINDIR/WinSxS/x86_Microsoft.VC80.CRT_ pero esto (todavía) no me ayuda a dar a entender SP1, ¿o hay algo que me falta en este punto? ¿Hay alguna tabla con números de versión internos y "externos", por lo que podría implicar cierto número de versión menor?

No puedo creer que Microsoft no proporcione nada para este escenario, pero buscar en las redes desde hace demasiado tiempo ahora me lleva de vuelta a la buena SO :)


Abrí un proyecto de Visual C ++ en Github que busca específicamente las DLL redistribuibles de VC ++ y las puso a disposición bajo la licencia de Apache 2.0.

Tiene tres métodos diferentes para verificar la disponibilidad de VC ++ 9 y VC ++ 10 runtimes:

  1. Comprueba las API de MsiQueryProductState;
  2. Inspeccione el contenido de la carpeta WinSxS para encontrar directorios de productos coincidentes; y
  3. Comprueba el directorio de trabajo actual para cualquier versión local de los tiempos de ejecución de VC ++ 9 y VC ++ 10 (e inspecciona sus contenidos).

Aquí hay una muestra de cómo se ve realmente:

wcout << _T("Checking for the availability of VC++ runtimes..") << endl; wcout << _T("----------- Visual C++ 2008 (VC++9) -----------") << endl; wcout << _T("Visual C++ 2008 (x86) ? ") << (IsVC2008Installed_x86() ? _T("true") : _T("false")) << endl; wcout << _T("Visual C++ 2008 (x64) ? ") << (IsVC2008Installed_x64() ? _T("true") : _T("false")) << endl; wcout << _T("Visual C++ 2008 SP1 (x86) ? ") << (IsVC2008SP1Installed_x86() ? _T("true") : _T("false")) << endl; wcout << _T("Visual C++ 2008 SP1 (x64) ? ") << (IsVC2008SP1Installed_x64() ? _T("true") : _T("false")) << endl;

Autoricé el proyecto de detección de crt en Apache 2.0, así que siéntete libre de usarlo en tus propias aplicaciones.


Para Visual Studio C ++ 2010, las cosas se pusieron un poco más fáciles .

A diferencia de los paquetes redistribuibles de Visual C ++ 2005 y 2008, existen claves de registro que se pueden usar para detectar la presencia del paquete redistribuible de Visual C ++ 2010.

Valores de registro de detección del paquete redistribuible de Visual C ++ 2010

Paquete redistribuible de Visual C ++ 2010 (x86)

[HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / VisualStudio / 10.0 / VC / VCRedist / x86] Installed = 1 (REG_DWORD)

Paquete redistribuible de Visual C ++ 2010 (x64)

[HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / VisualStudio / 10.0 / VC / VCRedist / x64] Installed = 1 (REG_DWORD)

Paquete redistribuible de Visual C ++ 2010 (ia64)

[HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / VisualStudio / 10.0 / VC / Vcredist / ia64] Installed = 1 (REG_DWORD)

Nota : Deberá verificar bajo Wow6432Node en un sistema operativo de 64 bits. (HKLM / Software / Wow6432Node / Microsoft ....)

Si te gusta la versión anterior, aquí están los GUID

Códigos de producto del paquete redistribuible de Visual C ++ 2010

  • Paquete redistribuible de Visual C ++ 2010 (x86) - {196BB40D-1578-3D01-B289-BEFC77A11A1E}
  • Paquete redistribuible de Visual C ++ 2010 (x64) - {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}
  • Paquete redistribuible de Visual C ++ 2010 (ia64) - {C1A35166-4301-38E9-BA67-02823AD72A1B}

Códigos de producto del paquete redistribuible de Visual C ++ 2010 SP1

  • Paquete redistribuible de Visual C ++ 2010 SP1 (x86) - {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
  • Paquete redistribuible de Visual C ++ 2010 SP1 (x64) - {1D8E6291-B0D5-35EC-8441-6616F567A0F7}
  • Paquete redistribuible de Visual C ++ 2010 SP1 (ia64) - {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}

Puede tomar el enfoque recomendado para instalar Directx: siempre ejecute el redistribuible. Como es obligatorio y ya lo está enviando, no hay ningún problema al ejecutarlo, incluso si ya está instalado.


parece que hay otra solución propuesta por un desarrollador de Microsoft, que utiliza la API MsiQueryProductState , y también depende de los GUID.

Actualización : el código se activó ayer y parece estar funcionando bien. Esto es lo que se está haciendo: se comprueba el GUID más reciente que conozco y la ruta² hasta donde se supone que se debe instalar. Si ambos fallan, está instalado. Esto parece que funciona bien.

Además, se instala con los argumentos de línea de comandos "/ qb" que significa "desatendido pero no invisible". Vea esta otra publicación en el blog sobre esos params.

FWIW, GUID para redistribuible de Microsoft Visual C ++ 2008 / VC90 SP1 - x86 9.0.30729

  • 64bit 30729.17: 8220EEFE-38CD-377E-8595-13398D740ACE
  • 32bit 30729.17: 9A25302D-30C0-39D9-BD6F-21E6EC160475
  • 32bit 30729.01: 6AFCA4E1-9B78-3640-8F72-A7BF33448200

² La ruta de acceso: $WINDIR/WinSxS/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729*