13

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

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

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

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

完整的错误如下:


平台版本信息 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)df-dll-73600 dll : 2.0.50727.3053 (netfxsp.050727-3000) dfshim.dll : 4.0.31106.0 (Main.031106-0000)

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

错误摘要 下面是错误摘要,这些错误的详细信息在日志后面列出。* 激活 C:\Documents and Settings\Administrator\Desktop\EatonWizard.application 导致异常。检测到以下失败消息: + 从 file:///C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application 读取清单时出现异常:清单可能无效或无法打开文件。+ 清单 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 读取清单的异常:清单可能无效或文件无法打开。- 来源:System.Deployment - 堆栈跟踪:在 System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) 在 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState、IDownloadNotification 通知、DownloadOptions 选项、ServerInformation& serverInformation)在 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri,布尔 isShortcut,字符串 textualSubId , String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) --- 内部异常 --- System.Deployment.Application.InvalidDeploymentException (SignatureValidation) - 清单 XML 签名无效。- 来源:系统。部署 - 堆栈跟踪:在 System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s) 在 System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) --- 内部异常 --- 系统.Security.Cryptography.CryptographicException - 无法为提供的签名算法创建 SignatureDescription。- 来源:System.Security - 堆栈跟踪:System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) at System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(AsymmetricAlgorithm& signingKey) at System.Deployment.Internal.CodeSigning .SignedCmiManifest。

组件商店交易详情 没有可用的交易信息。

4

2 回答 2

36

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

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

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

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

转到项目属性-> 签名

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

于 2013-03-05T18:11:46.190 回答
2

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


当心新的代码签名证书

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

因为我还对应用程序进行基于代码的更新,而不仅仅是让 Microsoft 处理它,因此它对最终用户来说是一种更加无缝的体验,而无需他们按我的应用程序的样式按下按钮。

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

所以我最担心的是,是的,好吧,据说从星期一开始就不支持 XP 了,但这并不意味着 Framework 4 不应该接受新证书,如果这是他们向所有人推送的内容。微软甚至积极参与了这一推动!

唯一可行的答案是如上,您必须使用 Visual Studio 创建一个不受信任的临时证书,这太荒谬了!!!(我还是有希望,也许我没有找到正确的方法来使用新证书)

于 2014-04-03T12:41:46.583 回答