2011-10-29 5 views
6

Estoy usando el proyecto de instalación de Visual Studio. Si voy a las propiedades del proyecto de instalación, me permite elegir qué prerrequisitos son necesarios, en cuyo momento elijo C++ Redistributable.Incluye C++ como prerrequisito, pero dice "Ya existe una nueva versión"

En algunos sistemas, esto funciona bien, pero recientemente mis usuarios informan que la instalación falló porque "se ha detectado una versión más reciente de Microsoft Visual C++ 2010 Redistributable en la máquina".

¿Cuál es la forma correcta de hacerlo? ¿La detección de Visual Studio está contaminada de alguna manera e incapaz de detectar C++?

Respuesta

1

La Redistribuible de Visual C++ 2010 predeterminada usa un Código de producto para la detección. Por lo tanto, Visual C++ 2010 SP1 Redistributable no se detecta como instalado. Esta es la razón por la cual el paquete intenta instalarlo y falla.

Una buena solución es crear su propio prerrequisito personalizado que utilice un mejor criterio de detección. Aquí hay un artículo que puede ayudarlo: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx

Los proyectos de instalación de Visual Studio no admiten la creación de prerrequisitos personalizados. Sin embargo, puede hacerse generando manualmente los manifiestos requeridos.

Puede encontrar la estructura se manifiesta aquí: http://msdn.microsoft.com/en-us/library/ms229223(VS.80).aspx

Estos manifiestos se pueden generar de forma automática con la herramienta Bootstrapper Manifest Generator.

Después de generar los manifiestos de paquetes, puede agregar todos estos archivos (incluyendo el paquete) en una carpeta separada en la carpeta Visual Studio requisitos previos, por ejemplo:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\ 

De esta forma Visual Studio mostrará el requisito previo en la página de propiedades del proyecto de configuración.

4

Yuck, esto es feo. Me preguntaba qué sucedería después de que Microsoft renunciara a la instalación lado a lado de los DLL de tiempo de ejecución para VS2010. Parece claro, las interwebs están llenas de este error de instalador. La víctima más grande parece ser Microsoft misma y Streets and Maps no se instala.

No conozco ningún parche de seguridad, así que tengo que suponer que todavía no se ha actualizado al SP1. Y sus clientes usan un producto de un proveedor que sí lo hizo. Esta es una batalla que siempre vas a perder algún día. Considere aprovechar la implementación local de la aplicación para las DLL, copiándolas en el mismo directorio que su EXE principal. Simplemente cópielos desde el directorio vc/redist antes de armar el paquete de instalación, sin necesidad de marcar el requisito previo. Necesitará:

  • msvcr100.dll y msvcp100.dll para el normal CRT
  • atl100.dll si utiliza ATL
  • mfc100.dll, mfc100u.dll, mfcm100.dll, mfc100u.dll si utiliza MFC (u = Unicode, m = logró)
  • mfc100xxx.dll donde xxx es el código de idioma de 3 letras si utiliza MFC en una máquina no-Inglés
  • vcomp100.dll si se utiliza en el código OpenMP .

La única desventaja es que no se actualizarán si hay un parche de seguridad. Eso también podría ser una ventaja, dependiendo de qué color de gafas uses.Si no se siente cómodo, mantener el equipo que crea el paquete de instalación actualizado, incluida la activación de Windows Update, es un requisito importante.

Cuestiones relacionadas