I know it is a very commonly faced problem. But, there is a slight difference, my WPF installs perfectly and runs on Windows 7 and Windows 8 OSes. But, when tried to install on a VM running Windows XP, it gives the following Error:
Cannot continue. The application is improperly formatted. Details:
PLATFORM 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
ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* 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)
COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.
- I re-signed the application with a valid key
- I have installed on multiple PCs and it installs and works fine.
Please help me enumerate possible cause of this error.
It's because your developer machine had .NET 4.5 installed, while your client machines only had .NET 4.0 installed. The .NET 4.0 client machines can't read the manifest, as they expect SHA-1, while the .NET 4.5 developer machines can.
I have seen a similar issue before where a particular WIndows OS could not 'understand' or validate the results of a certificate hash due to missing crypto providers, in my particular case it was related to using a X509 certificate generated using a v3 template for the clickonce signing.
The highlighted part of the message combined with the successful installation on several machines before failing on the WinXP machine would indicate that you are also running into a similar problem - WinXP doesn't know about the crypto algorithmn specified in the certificate that you've used to sign the clickonce.
I don't know of a good solution to this, normal advice you will find on the internet is to use a v2 template to generate the X509 instead of a v3 template, but this is not necessarily a good solution and is beyond the capabilities of most organisations (espcecially as most people use a bought certificate rather than certs generated from their own Certificate Authority).
I found the reason. It was MIME type issue in server setting.
So, please add
.htaccess
file in FTP root directory.And write this in it.
It works perfectly for me.
I had the same issue and it was just the machine didn't have the appropriate .Net version.
Do you have SP-3 installed on the windows XP machine, and all of the available Windows Updates? Microsoft pushes out updates to the code around certificates, and the trusted publishers and other related info periodically.
I had the same issue for a WinForms app that was built with Visual Studio 2012 and deployed on an XP machine with all the critical updates (SP3 installed and Windows Installer 4.5). I too had to change my application to be unsigned by going to the [Signing] tab on the Properties page of my project. I unchecked both: [Sign the Click One manifests] and [Sign the assembly]. The same application installed fine on Windows 7 machines with the signing enabled.