6

我知道这是一个非常普遍的问题。但是,有一点不同,我的 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 上,它可以正常安装和运行。

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

4

9 回答 9

5

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

于 2013-09-04T16:19:27.773 回答
2

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

于 2013-05-08T15:16:31.440 回答
2

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

因此,请.htaccess在 FTP 根目录中添加文件。

并写在里面。

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

它非常适合我。

于 2018-12-18T05:00:16.137 回答
0

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

于 2013-04-07T00:31:25.927 回答
0

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

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

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

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

于 2013-04-03T09:02:41.327 回答
0

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

于 2016-06-28T11:23:33.827 回答
0

注释掉 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>
于 2021-05-03T07:15:24.700 回答
-1

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

于 2013-09-20T17:06:47.473 回答
-1

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

Visual Studio 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

于 2020-04-15T14:34:43.653 回答