“清单XML签名无效”

操作系统:安装了.NET 4.5的Visual Studio Pro 2012的Windows 7 64位。

我在Visual Studios中使用了Publish选项,并确保我单击了Sign the clickOnce清单并签署程序集。 它仍然无法在另一台计算机上运行,​​并且说我没有有效的XML签名。 我已粘贴下面的错误消息。

我还读过: 如何移动ClickOnce部署包 , 我是否必须签署ClickOnce清单? 。 VS2012 .NET 4.0 Clickonce VSTO CryptographicException:无法为提供的签名算法和其他几个算法创建SignatureDescription 。

我需要能够在.NET 4.0上部署我的程序,并且我无法访问另一个版本的Visual Studio。 提前致谢!

完成错误如下:


PLATFORM VERSION INFO Windows:5.1.2600.196608(Win32NT)公共语言运行时:2.0.50727.3603 System.Deployment.dll:2.0.50727.3053(netfxsp.050727-3000)mscorwks.dll:2.0.50727.3603(GDR.050727-3600)dfdll。 dll:2.0.50727.3053(netfxsp.050727-3000)dfshim.dll:4.0.31106.0(Main.031106-0000)

来源部署url:file:/// C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application

错误摘要以下是错误摘要,这些错误的详细信息将在后面的日志中列出。 *激活C:\ Documents and Settings \ Administrator \ Desktop \ EatonWizard.application导致exception。 检测到以下失败消息:+文件中的exception读取清单:/// C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application:清单可能无效或无法打开文件。 + Manifest XML签名无效。 无法为提供的签名算法创建+ SignatureDescription。

组件存储事务故障摘要未检测到事务错误。

警告此操作期间没有警告。

操作进度状态* [10/10/2012 2:05:02 PM]:已启动C:\ Documents and Settings \ Administrator \ Desktop \ EatonWizard.application的激活。

错误详细信息在此操作期间检测到以下错误。 * [10/10/2012 2:05:02 PM] System.Deployment.Application.InvalidDeploymentException(ManifestParse) – 来自file:/// C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application的exception读取清单:清单可能无效或无法打开文件。 – 来源:System.Deployment – 堆栈跟踪:在System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass的System.Deployment.Application.ManifestReader.FromDocument(String localPath,ManifestType manifestType,Uri sourceUri)中(SubscriptionStore子存储,Uri和sourceUri,TempFile和tempFile, System.Deployment.Application.ApplicationActivator上的System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore子存储,Uri&sourceUri,TempFile&tempFile,SubscriptionState和subState,IDownloadNotification通知,DownloadOptions选项)中的SubscriptionState&subState,IDownloadNotification通知,DownloadOptions选项,ServerInformation和serverInformation。 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker上的PerformDeploymentActivation(Uri activationUri,Boolean isShortcut,String textualSubId,String deploymentProviderUrlFromExtension,BrowserSettings browserSettings,String&errorPageUrl) bject state)—内部exception— System.Deployment.Application.InvalidDeploymentException(SignatureValidation) – Manifest XML签名无效。 – 来源:System.Deployment – 堆栈跟踪:System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s)at System.Deployment.Application.ManifestReader.FromDocument(String localPath,ManifestType manifestType,Uri sourceUri)— Innerexception— System.Security.Cryptography.CryptographicException – 无法为提供的签名算法创建SignatureDescription。 – 来源:System.Security – 堆栈跟踪:位于System.Seeployment.Internal.CodeSigning的System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(AsymmetricAlgorithm&signingKey)中的System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm键) .SignedCmiManifest.Verify(CmiManifestVerifyFlags verifyFlags)在System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s)

COMPONENT STORE TRANSACTION DETAILS没有可用的交易信息。

我今天遇到了同样的问题。 这就是我解决的问题:

导致问题的原因是:我们使用vs2012和framework 4.5创建了一个clickonce项目。 然后我们将目标框架更改为4.0(客户端要求)。

问题是:Framework 4.5使用SHA-256算法进行签名,4.0使用SHA-1。 当我们将目标框架更改为4.0并且vs2012没有更改算法时。

解决方案:手动更改算法,生成新证书。

转到项目属性 – >签名

您将看到“签名算法”中使用的算法。 您可以创建一个新的测试证书,然后您会注意到它变为’sha1RSA’

请注意,我会将此添加为评论,但由于愚蠢的声誉规则,我只能添加答案!


注意新的代码签名证书

我最近遇到了这个问题,因为我们的代码签名证书需要续订。 因此,在ClickOnce部署期间,由于微软没有修补XP版本的Framework 4以使用SHA2证书这一事实,我告诉我所有的clickonce项目都使用新的代码签名证书。

因为我还对应用程序进行了基于代码的更新,而不仅仅是让微软处理它,这样对于最终用户来说这是一种更加无缝的体验,而不需要按下按钮和我的应用程序风格。

但是,我遇到了一个错误,我的程序没有报告清单错误,而是它只是挂起(我的坏!)。 为了获得更新,我们在工作到凌晨3点之后发现了这个问题,我不得不创建一个由Visual Studio发布的临时证书。 问题呢? 代码更新不再是无缝的,因为微软发布了一个愚蠢的对话,因为发布者是未知的!

所以我最关心的是,好的,从周一开始不支持XP,但这不应该意味着框架4不应该接受新证书,如果这是他们向所有人推送的。 微软甚至积极参与推动!

唯一可行的答案是,如上所述,你必须使用Visual Studio创建一个不受信任的临时证书,这是荒谬的! (我仍然希望我没有找到使用新证书的正确方法)