clickoncemage

The application is improperly formatted


I get this error while starting the ClickOnce setup. It says 'Cannot continue. The application is improperly formatted.'

EDIT: This happened after the Visual Studio 2013 Update 4 (2013.4)

Here's how I create the files:

mage -New Application -ToFile "$BinSingleEscape\Release\$ProductNameFile.exe.manifest" -Name "$ProductName" -Version $Version -FromDirectory "$BinSingleEscape\Release" -IconFile "Icon.ico" -SupportURL "$SupportUrl" -UseManifestForTrust true -Publisher "$PublisherCompany" -TimestampUri http://timestamp.verisign.com/scripts/timstamp.dll

mage -Sign "$BinSingleEscape\Release\$ProductNameFile.exe.manifest" -CertHash "d00...66f" -TimestampUri http://timestamp.verisign.com/scripts/timstamp.dll

mage -New Deployment -Install true -AppCodeBase "$Version\$ProductNameFile.exe.manifest" -Name "$ProductNameFile" -Publisher "$PublisherCompany" -AppManifest "$BinSingleEscape\Release\$ProductNameFile.exe.manifest" -ProviderUrl "$InstallUrl/$ProductNameFile.application" -Version $Version -ToFile "$BinSingleEscape\Deploy\$ProductNameFile.application" -SupportURL "$SupportUrl" -TimestampUri http://timestamp.verisign.com/scripts/timstamp.dll

mage -Sign "$BinSingleEscape\Deploy\$ProductNameFile.application" -CertHash "d00...66f" -TimestampUri http://timestamp.verisign.com/scripts/timstamp.dll

The details of the error:

ERROR SUMMARY
    Below is a summary of the errors, details of these errors are listed later in the log.
    * Activation of http://downloads...App.application resulted in exception. Following failure messages were detected:
        + Exception reading manifest from http://downloads....App.exe.manifest: the manifest may not be valid or the file could not be opened.
        + Parsing and DOM creation of the manifest resulted in error. Following parsing errors were noticed: 
            -HRESULT:   0x80070c81
             Start line:    0
             Start column:  0
             Host file:     
        + Exception from HRESULT: 0x80070C81

COMPONENT STORE TRANSACTION FAILURE SUMMARY
    No transaction error was detected.

WARNINGS
    There were no warnings during this operation.

OPERATION PROGRESS STATUS
    * [15.12.2014 18:50:01] : Activation of http://downloads....App.application has started.
    * [15.12.2014 18:50:01] : Processing of deployment manifest has successfully completed.
    * [15.12.2014 18:50:01] : Installation of the application has started.

ERROR DETAILS
    Following errors were detected during this operation.
    * [15.12.2014 18:50:02] System.Deployment.Application.InvalidDeploymentException (ManifestParse)
        - Exception reading manifest from http://downloads....App.exe.manifest: 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.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
            at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, Uri& appSourceUri, String& appManifestPath)
            at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
            at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
            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 (ManifestParse)
        - Parsing and DOM creation of the manifest resulted in error. Following parsing errors were noticed: 
            -HRESULT:   0x80070c81
             Start line:    0
             Start column:  0
             Host file:     
        - Source: System.Deployment
        - Stack trace:
            at System.Deployment.Application.Manifest.AssemblyManifest.LoadCMSFromStream(Stream stream)
            at System.Deployment.Application.Manifest.AssemblyManifest..ctor(FileStream fileStream)
            at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri)
        --- Inner Exception ---
        System.Runtime.InteropServices.COMException
        - Exception from HRESULT: 0x80070C81
        - Source: System.Deployment
        - Stack trace:
            at System.Deployment.Internal.Isolation.IsolationInterop.CreateCMSFromXml(Byte[] buffer, UInt32 bufferSize, IManifestParseErrorCallback Callback, Guid& riid)
            at System.Deployment.Application.Manifest.AssemblyManifest.LoadCMSFromStream(Stream stream)

Solution

  • The problem was, that there were two assemblies with the same signature in the ClickOnce deployment.

    Visual Studio creates (after the 2013.4-update) a folder called 'app.publish' which contains the a copy of the main assembly.

    By running mage [...] -FromDirectory "Release" it included the main assembly and the copy of the main assembly from the app.publish directory.

    I solved this by deleting the app.publish folder before running mage.