【问题标题】:Manifest may not be valid or the file could not be opened.清单可能无效或文件无法打开。
【发布时间】:2013-03-24 20:24:38
【问题描述】:

我知道这是一个非常常见的问题。但是,有一点不同,我的 WPF 可以完美安装并在 Windows 7 和 Windows 8 操作系统上运行。但是,当尝试在运行 Windows XP 的 VM 上安装时,会出现以下错误:

无法继续。应用程序格式不正确。 详情

平台版本信息

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

错误摘要

以下是错误摘要,日志后面会列出这些错误的详细信息。

* 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)

组件商店交易详情

没有可用的交易信息。

  • 我使用有效密钥重新签署了应用程序
  • 我已在多台 PC 上安装,它可以正常安装和运行。

请帮我列举这个错误的可能原因。

【问题讨论】:

    标签: c# .net wpf clickonce


    【解决方案1】:

    我能够通过删除清单的签名来解决我的问题。
    如果您右键单击您的项目并转到属性,然后转到 签名选项卡;取消选中签署 ClickOnce 清单签署程序集
    我不确定这在安全性方面有什么作用,但我的应用是在我删除这些选项后安装的。

    【讨论】:

    • 奇怪的是,当我取消选中此框,然后按 F7 重建项目时,该框神奇地再次被选中。我不能“保持”它不勾选!
    • 如果你不签署它,每个安装它的人都必须通过 Windows 上的多个对话框来坚持他们信任你。您可以在内部应用程序中摆脱它,但在客户安装的应用程序中却不行。
    • 如果您希望您的应用程序使用您的证书进行签名,这不是一个解决方案...
    【解决方案2】:

    我遇到了同样的问题,只是机器没有合适的 .Net 版本。

    【讨论】:

      【解决方案3】:

      我找到了原因。这是服务器设置中的 MIME 类型问题。

      所以,请在 FTP 根目录中添加.htaccess 文件。

      把这个写在里面。

      AddType application/microsoftpatch .msp
      AddType application/microsoftupdate .msu 
      
      AddType application/x-ms-application .application  
      AddType application/x-ms-application .manifest  
      AddType application/octet stream .deploy   
      
      AddType application/x-ms-vsto .vsto
      

      它非常适合我。

      【讨论】:

        【解决方案4】:

        我之前看到过类似的问题,由于缺少加密提供程序,特定的 WIndows 操作系统无法“理解”或验证证书哈希的结果,在我的特定情况下,它与使用使用 v3 生成的 X509 证书有关clickonce 签名的模板。

        无法为提供的签名算法创建SignatureDescription

        消息中突出显示的部分与在 WinXP 机器上失败之前在多台机器上成功安装相结合,表明您也遇到了类似的问题 - WinXP 不知道您在证书中指定的加密算法'已经用于签署 clickonce。

        我不知道有什么好的解决方案,你会在互联网上找到的一般建议是使用 v2 模板而不是 v3 模板来生成 X509,但这不一定是一个好的解决方案,并且超出了大多数组织的能力(尤其是大多数人使用购买的证书而不是从他们自己的证书颁发机构生成的证书)。

        【讨论】:

          【解决方案5】:

          您是否在 Windows XP 机器上安装了 SP-3,以及所有可用的 Windows 更新? Microsoft 会定期发布围绕证书、受信任的发布者和其他相关信息的代码更新。

          【讨论】:

            【解决方案6】:

            这是因为您的开发人员计算机安装了 .NET 4.5,而您的客户端计算机仅安装了 .NET 4.0。 .NET 4.0 客户端机器无法读取清单,因为它们期望 SHA-1,而 .NET 4.5 开发人员机器可以。

            【讨论】:

              【解决方案7】:

              我有类似的问题,几乎相同。我通过删除不在应用程序文件根目录中的 .dll 解决了一个问题。

              视觉工作室 2019: 右键单击项目名称-属性-发布-应用程序文件。

              就像在这篇文章中一样: https://social.msdn.microsoft.com/Forums/en-US/3d0c4382-9b48-4d28-9b79-25607e668074/problem-with-installing-clickonce-after-adding-reportviewercontrol-14-to-the-project?forum=winformssetup

              【讨论】:

                【解决方案8】:

                注释掉 app.manifest 中的 vista 条目对我有用

                    <application>
                      <!-- A list of all Windows versions that this application is designed to work with. 
                      Windows will automatically select the most compatible environment.-->
                
                      <!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
                      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->
                
                      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
                      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
                
                      <!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
                      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>
                
                      <!--The ID below indicates application support for Windows 8.1 -->
                      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
                      
                      <!--The ID below indicates application support for Windows 10 -->
                      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
                
                    </application>
                

                【讨论】:

                  【解决方案9】:

                  对于使用 Visual Studio 2012 构建并部署在具有所有关键更新(安装了 SP3 和 Windows Installer 4.5)的 XP 计算机上的 WinForms 应用程序,我遇到了同样的问题。我也必须通过转到项目属性页面上的 [签名] 选项卡将我的应用程序更改为未签名。我都取消选中: [签署 Click One 清单] 和 [签署程序集]。在启用签名的 Windows 7 机器上,相同的应用程序安装良好。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-01-06
                    • 1970-01-01
                    • 2020-07-11
                    • 2022-06-21
                    • 2012-12-24
                    • 1970-01-01
                    相关资源
                    最近更新 更多