2011-10-16 23 views
22

Creé un instalador con Visual Studio 2010 Versión 10.0.40.219.1 SP1 Rel. Mi aplicación está compilada/compilada para x86 y requiere bibliotecas de tiempo de ejecución de VC++. Por lo tanto, el proyecto de configuración se configura con las bibliotecas de tiempo de ejecución de VC++ como requisito previo.El requisito previo de Visual C++ 2010 Runtime Libraries sigue apareciendo en un instalador creado por VS 2010

Cada vez que ejecuto el instalador aparece la ventana emergente "Los siguientes componentes se instalarán en su máquina". "Visual C++ 2010 Runtime Libraries (x86)". La primera vez que se instala como esperado. La segunda y posteriores veces me pregunta si reparar o eliminar VC++ 2010.

Esta ventana emergente solo se debe mostrar una vez, la primera vez que se descubre que VC++ redistribuible no está instalado.

¿Alguien ha visto esto? ¿Alguien sabe cómo puedo solucionar esto?

Solución:

La respuesta acepté me dio lo que necesitaba para resolver el problema. Aquí están los detalles sobre lo que hice para arreglar esto, lo cual fue muy simple de hecho. He editado el archivo:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86\product.xml 

En este archivo encontrará los siguientes:

<InstallChecks> 
    <MsiProductCheck Property="VCRedistInstalled" Product="{6EE91C1A-A2E7-38CD-AEBB-3B900A4D8868}"/> 
</InstallChecks> 

Lo anterior contiene el código de producto incorrecto. Reemplazar el anterior con el código de producto correcto para el C++ 2010 redistribuible de Visual SP1 de la siguiente manera:

<InstallChecks> 
    <MsiProductCheck Property="VCRedistInstalled" Product="{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"/> 
</InstallChecks> 

El enlace here muestra los códigos de los productos correctos para los distintos VC++ 2010 Redistributables.

+0

duplicado posible de [Setup.exe instalando prerrequisitos incluso si están preinstalados] (http://stackoverflow.com/questions/4797057/setup-exe-installing-prerequisites-even-if-the-are-preinstalled) – wimh

+2

Es cierto que era un duplicado, pero no fue respondido. Esta publicación ahora tiene la respuesta y los pasos necesarios para solucionar el problema. – Elan

Respuesta

14

Esto ocurre porque los criterios de detección de requisitos previos son incorrectos.

Una solución es crear su propio prerrequisito personalizado con un criterio correcto. Tal vez este artículo ayude: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx

Los proyectos de instalación de Visual Studio no son compatibles con esto. Pero se puede hacer 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\ 

A continuación, puede seleccionar el requisito en su configurar la página de propiedades del proyecto.

+0

Copié la carpeta vcredist_x86 en vcredist_x86_fixed y renombré una cadena en el.el archivo xml de la carpeta "en" que pensé que era el texto que se muestra en el cuadro de diálogo Prerrequisitos, pero no hay entradas adicionales en ese cuadro de diálogo. He reiniciado VS. ¿Debo hacer algo además de que aparezca el nuevo paquete en el cuadro de diálogo de requisitos previos? – angularsen

+0

Asegúrese de que su nuevo prerrequisito use un nombre personalizado. O al menos eliminar la carpeta de requisitos previos original. Los prerrequisitos con nombres duplicados no son compatibles. –