操作系统:安装了.NET 4.5的Visual Studio Pro 2012的Windows 7 64位。
我在Visual Studios中使用了Publish选项,确保我点击了SignOignOnce清单并签署程序集。它仍然无法在另一台计算机上运行,并且说我没有有效的XML签名。我已粘贴下面的错误消息。
我还读过:How to move a ClickOnce deployment package,Do I have to sign my ClickOnce manifest?。 VS2012 .NET 4.0 Clickonce VSTO CryptographicException: SignatureDescription could not be created for the signature algorithm supplied和其他几个人。
我需要能够在.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.050727-3600) dfdll.dll:2.0.50727.3053(netfxsp.050727-3000) dfshim.dll:4.0.31106.0(Main.031106-0000)
SOURCES 部署网址: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的异常读取清单:清单可能无效或无法打开文件。 + 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的异常读取清单:清单可能无效或无法打开文件。 - 来源: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 notification,DownloadOptions options,ServerInformation& serverInformation) 在System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore子存储,Uri& sourceUri,TempFile& tempFile,SubscriptionState& subState,IDownloadNotification notification,DownloadOptions选项) 在System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri,Boolean isShortcut,String textualSubId,String deploymentProviderUrlFromExtension,BrowserSettings browserSettings,String& errorPageUrl) 在System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(对象状态) ---内部例外--- System.Deployment.Application.InvalidDeploymentException(SignatureValidation) - 清单XML签名无效。 - 来源:System.Deployment - 堆栈跟踪: 在System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s) 在System.Deployment.Application.ManifestReader.FromDocument(String localPath,ManifestType manifestType,Uri sourceUri) ---内部例外--- System.Security.Cryptography.CryptographicException - 无法为提供的签名算法创建SignatureDescription。 - 来源:System.Security - 堆栈跟踪: 在System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) 在System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(AsymmetricAlgorithm& signingKey) 在System.Deployment.Internal.CodeSigning.SignedCmiManifest.Verify(CmiManifestVerifyFlags verifyFlags) 在System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s)
组件商店交易细节 没有可用的交易信息。
答案 0 :(得分:36)
我今天遇到了同样的问题。这就是我解决的问题:
导致问题的原因: 我们使用vs2012和framework 4.5创建了一个clickonce项目。 然后我们将目标框架更改为4.0(客户要求)。
问题是:Framework 4.5使用SHA-256算法进行签名,4.0使用SHA-1。当我们将目标框架更改为4.0并且vs2012没有更改算法时。
解决方案:手动更改算法,生成新证书。
转到项目属性 - >签
您将看到“签名算法”中使用的算法。您可以创建一个新的测试证书,然后您会注意到它变为'sha1RSA'
答案 1 :(得分:2)
注意,我会将此作为评论添加,但由于愚蠢的声誉规则,我只能添加答案!
我最近遇到了这个问题,因为我们的代码签名证书需要续订。因此,对于Microsoft在ClickOnce部署期间没有修补XP版本的Framework 4以使用SHA2证书的事实,我告诉我所有的clickonce项目都使用新的代码签名证书。
由于我还对应用程序进行了基于代码的更新,而不是让微软处理它,因此对于最终用户而言,它是一种更加无缝的体验,而无需按下按钮和我的应用程序风格。
但是,我遇到了一个错误,我的程序没有报告清单错误,而是挂起(我的坏!)。为了获得更新,我们在工作到凌晨3点之后发现了这个问题,我不得不创建一个由Visual Studio发布的临时证书。问题呢?代码更新不再是无缝的了,因为当发布者不为人知时,微软会把一个愚蠢的对话放进去!
所以我最关心的是,好的,从周一开始不支持XP,但这并不意味着框架4不应该接受新证书,如果这是他们向所有人推送的。微软甚至积极参与这一推动!
唯一可行的答案是,如上所述,你必须使用Visual Studio创建一个不受信任的临时证书,这是荒谬的! (我仍然希望我没有找到使用新证书的正确方法)