Error al publicar una aplicación ClickOnce en Visual Studio 2010 y la .NET Framework 4.5 con requisitos previos personalizados

En este artículo se proporciona información sobre cómo resolver el error (el archivo tiene ... cambiado... o puede estar dañado) al publicar una aplicación ClickOnce en Microsoft Visual Studio 2010 y la .NET Framework 4.5 o una versión posterior.

Versión del producto original:   Visual Studio Premium 2010, Visual Studio Professional 2010, Visual Studio Ultimate 2010, .NET Framework 4.5
Número KB original:   3072421

Síntomas

Al publicar una aplicación de ClickOnce con Visual Studio 2010 en un equipo que tenga instalados los .NET Framework 4.5, 4.5.1, 4.5.2 o una versión más reciente, los paquetes de requisitos previos redistribuibles no se empaquetan correctamente si no están firmados. Por lo tanto, el usuario recibe el siguiente mensaje de error cuando Setup.exe se ejecuta:

Se produjo un error al instalar componentes del sistema para <Application_Name>. El programa de instalación no puede continuar hasta que todos los componentes del sistema se hayan instalado correctamente.
El programa de instalación ha detectado que el archivo ha cambiado desde que se publicó <path to a temporary location of the MSI file> inicialmente o puede estar dañado.
Consulte el archivo de registro de instalación ubicado en <path to the Install.log file in the temporary directory under the user's profile> para obtener más información.

Además, la siguiente entrada se registra en el archivo Install.log para indicar que la comprobación hash ha fallado para el archivo de requisitos previos sin firma:

Comprobar la integridad de los archivos <path to a temporary location of the MSI file>
Comprobación de hash de archivo
Error: el programa de instalación ha detectado que el archivo ha cambiado desde que se publicó inicialmente <path to a temporary location of the MSI file> o puede estar dañado.

Causa

Este problema se produce porque el proceso de compilación genera la síntesis del archivo de requisitos previos mediante el algoritmo hash SHA2 cuando empaqueta el archivo de requisitos previos. Sin embargo, Setup.exe archivo intenta leer el resumen mediante el algoritmo SHA1. Por lo tanto, se produce un error de coincidencia entre los resúmenes esperados y los resúmenes reales, y Setup.exe determina que el archivo .msi falta o está dañado.

Solución

Para resolver este problema, asegúrese de que el archivo de requisitos previos personalizados (.msi) esté firmado para que no se genere el resumen problemático.

Como alternativa, use Visual Studio 2012 o una versión posterior. Estas versiones de programa no experimentan este problema.

Más información

Visual Studio 2010 ejecuta tareas de MSBUILD que se distribuyen con el .NET Framework en el Microsoft.Build.Tasks.v4.0.dll ensamblado. Si el .NET Framework 4.5 o una versión posterior está instalado en el equipo de desarrollo, esta tarea de compilación genera un hash SHA2 del archivo de requisitos previos si ese archivo no está firmado. Durante la instalación en el equipo del usuario, el motor de arranque (Setup.exe) que genera Visual Studio 2010 no puede comprobar dicho hash.