Clickonce签名的应用程序失败,“具有与清单中指定的不同的计算哈希值”。法师未能解决问题

问题描述 投票:12回答:5

我几天来一直在努力解决这个问题。我见过像ClickOnce Deployment Error: different computed hash than specified in manifest这样的其他帖子,但这些解决方案对我来说似乎不起作用。

我有一个有效的代码签名证书,并且已经使用它签署我的ClickOnce应用程序数月。我意识到我没有签署可执行文件和dll自己,所以我试图这样做。现在,每次我发布并运行setup.exe时,它都会失败:“文件,xxxxxx.dll,具有与清单中指定的不同的计算哈希值。”

如果我不签署exe和Dlls,我可以重新部署。在发布之前,我确保exe / dll的所有副本都在所有目录(Target,Obj)中签名。我尝试过使用Mage / MageUI,但没有成功。是否可以在没有签名代码的情况下配置ClickOnce安装,然后发布签名代码?似乎合乎逻辑,但也许我错过了一些东西。

谢谢,格雷格

.net deployment clickonce signing mage
5个回答
7
投票

您是否有可能尝试部署WPF应用程序并使用Visual Studio 2012或更高版本?如果是这样,您必须使用项目文件中的“AfterCompile”设置来签署应用程序,否则最终会导致哈希不匹配。

请参阅此stackoverflow帖子:SignTool Not Signing ClickOnce App Using SHA256, Only Uses SHA1

链接到罗宾的优秀博客解决方案:http://robindotnet.wordpress.com/2013/04/14/windows-8-and-clickonce-the-definitive-answer-revisited/


3
投票

首先要检查:发布 - 更新 - 应用程序更新 - URL是正确的(例如,您有测试URL和部署URL)

要检查的第二件事:删除System.Deployment引用并将其重新添加。在将项目从VS2012移动到VS2015之后我们遇到了问题,并且这个操作在经过数小时尝试不同的想法后再次运行。

顺便说一句 - 这是一个如何做出公认答案的简单指南:

  • 右键单击该项目,然后选择“卸载项目”
  • 右键单击项目并选择“编辑”
  • 在最终项目关闭标记之前添加以下内容:

  <Target Name="AfterCompile" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <Exec Command="&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe&quot; sign /f &quot;C:\temp\myPFX.pfx&quot; /p &quot;admin&quot; /v &quot;$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)&quot;" />
  </Target>
  • 将signtool.exe和pfx(签名)文件的位置更改为您自己的位置
  • 保存项目文件
  • 重新加载项目

1
投票

我仍在使用Visual Studio 2015,每个构建配置的应用程序配置转换,TFS和使用不同的发布分支。经过大量研究,在我开始使用发布向导按钮之前,我无法找到解决此问题的解决方案。

如果您使用的是VS2015,请首先尝试使用“发布向导...”按钮而不是“立即发布”按钮进行发布。显然,发布向导按钮会在应用程序配置转换发生后更新清单文件。


0
投票

我使用Visual Studio 2013进行clickonce和代码签名的许多问题(包括此特定问题)都是通过安装vs2013 update 4解决的。

(也许更新3就足够了,但是经过几天的挫折后我安装了更新4)

我在每个程序集的post-build事件中使用带有/ sha1选项的signtool。 (一直运行)。


0
投票

清除应用程序的调试文件夹后,我的问题解决了,然后在服务器(目标机器)上删除了一切从发布文件夹。 Cleaning Publish fodler不会阻止您的应用程序在客户端计算机上安装。所以按照指示,经过3天的搜索,我已经为我工作了。然后我重新发布应用程序,它开始工作,他们的客户端应用程序也更新。

© www.soinside.com 2019 - 2024. All rights reserved.