El manifiesto puede no ser válido o el archivo no se pudo abrir.

Sé que es un problema muy común. Pero, hay una pequeña diferencia, mi WPF se instala perfectamente y se ejecuta en los sistemas operativos Windows 7 y Windows 8. Pero, cuando se intentó instalar en una máquina virtual que ejecuta Windows XP, da el siguiente error:

No puede continuar. La aplicación está formateada incorrectamente. Detalles :

PLATAFORMA VERSION INFO

Windows : 5.1.2600.196608 (Win32NT) Common Language Runtime : 4.0.30319.1 System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100) clr.dll : 4.0.30319.1 (RTMRel.030319-0100) dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100) dfshim.dll : 4.0.31106.0 (Main.031106-0000) SOURCES Deployment url : file:///S:/K3FrontEnd_NET4/Karacell3.application 

RESUMEN DE ERRORES

A continuación se muestra un resumen de los errores; los detalles de estos errores se enumeran más adelante en el registro.

 * Activation of S:\K3FrontEnd_NET4\Karacell3.application resulted in exception. Following failure messages were detected: + Exception reading manifest from file:///S:/K3FrontEnd_NET4/Karacell3.application: the manifest may not be valid or the file could not be opened. + Manifest XML signature is not valid. + SignatureDescription could not be created for the signature algorithm supplied. COMPONENT STORE TRANSACTION FAILURE SUMMARY No transaction error was detected. WARNINGS There were no warnings during this operation. OPERATION PROGRESS STATUS * [4/3/2013 2:58:13 PM] : Activation of S:\K3FrontEnd_NET4\Karacell3.application has started. ERROR DETAILS Following errors were detected during this operation. * [4/3/2013 2:58:14 PM] System.Deployment.Application.InvalidDeploymentException (ManifestParse) - Exception reading manifest from file:///S:/K3FrontEnd_NET4/Karacell3.application: the manifest may not be valid or the file could not be opened. - Source: System.Deployment - Stack trace: at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options) at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) --- Inner Exception --- System.Deployment.Application.InvalidDeploymentException (SignatureValidation) - Manifest XML signature is not valid. - Source: System.Deployment - Stack trace: at System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s) at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) --- Inner Exception --- System.Security.Cryptography.CryptographicException - SignatureDescription could not be created for the signature algorithm supplied. - Source: System.Security - Stack trace: at System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) at System.Security.Cryptography.Xml.SignedXml.CheckSignature(AsymmetricAlgorithm key) at System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(AsymmetricAlgorithm& signingKey) at System.Deployment.Internal.CodeSigning.SignedCmiManifest.Verify(CmiManifestVerifyFlags verifyFlags) at System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s) 

DETALLES DE TRANSACCIONES DE LA TIENDA DE COMPONENTES

No hay información de transacción disponible.

  • Volví a firmar la solicitud con una clave válida.
  • He instalado en varias PC y se instala y funciona bien.

Por favor, ayúdame a enumerar la posible causa de este error.

Pude resolver mi problema eliminando la firma del manifiesto.
Si hace clic con el botón derecho en su proyecto y va a propiedades, a continuación, a la pestaña Firma ; desmarque Firmar los manifiestos de ClickOnce y Firmar el ensamblaje .
No estoy seguro de qué hace esto en términos de seguridad, pero mi aplicación se instaló después de que eliminé estas opciones.

Tuve el mismo problema y era solo que la máquina no tenía la versión .Net adecuada.

He visto un problema similar antes en el que un sistema operativo particular de Windows no podía “entender” o validar los resultados de un hash de certificado debido a proveedores de criptografía faltantes, en mi caso particular, estaba relacionado con el uso de un certificado X509 generado usando una plantilla v3 para el Haga clic en la firma.

SignatureDescription no se pudo crear para el algoritmo de firma proporcionado

La parte resaltada del mensaje combinada con la instalación exitosa en varias máquinas antes de fallar en la máquina WinXP indicaría que también tiene un problema similar: WinXP no conoce el algoritmo de cifrado especificado en el certificado que ha usado para firmar el clickonce.

No conozco una buena solución para esto, el consejo normal que encontrará en Internet es utilizar una plantilla v2 para generar el X509 en lugar de una plantilla v3, pero esta no es necesariamente una buena solución y está más allá de las capacidades de la mayoría de las organizaciones (especialmente porque la mayoría de la gente usa un certificado comprado en lugar de certificados generados por su propia autoridad de certificación).

¿Tiene SP-3 instalado en la máquina con Windows XP y todas las actualizaciones de Windows disponibles? Microsoft lanza actualizaciones al código en torno a los certificados, y a los editores de confianza y otra información relacionada periódicamente.

Es porque su máquina de desarrollador tenía instalado .NET 4.5, mientras que las máquinas de sus clientes solo tenían instalado .NET 4.0. Las máquinas cliente .NET 4.0 no pueden leer el manifiesto, ya que esperan SHA-1, mientras que las máquinas desarrolladoras .NET 4.5 pueden.

Tuve el mismo problema con una aplicación WinForms que se creó con Visual Studio 2012 y se implementó en una máquina XP con todas las actualizaciones críticas (SP3 instalado y Windows Installer 4.5). Yo también tuve que cambiar mi aplicación para que no firmara yendo a la pestaña [Firma] en la página de Propiedades de mi proyecto. Sin marcar tanto: [Firmar los manifiestos de Click One] como [Firmar el ensamblaje]. La misma aplicación se instaló bien en las máquinas con Windows 7 con la firma habilitada.