visual-studio - 传输已发布文件时出现 ClickOnce 错误 "different computed hash than specified in manifest"

标签 visual-studio clickonce

我处在一个有趣的情况下,我维护一个程序的代码,该程序主要由我们的姊妹公司使用和分发。我们已准备好将该程序分发给所有第 3 方用户,并且由于从技术上讲它是我们的姊妹公司程序,我们希望将其托管在他们的网站上。 (为了匿名起见,我将在所有地方使用“程序”而不是实际的应用程序名称,并使用“www.SisterCompany.com”而不是它们的实际 URL。)

所以我准备好一切,设置发布设置以在程序启动时检查更新,最低要求版本,并将安装文件夹 URL 和更新位置设置为“http://www.SisterCompany.com/apps/program/”,以及实际的发布文件夹位置为“C:\LocalProjects\Program\Publish\”。其他一切都非常标准。

发布后,我确认直接从我的 C: 驱动器上的发布位置运行时,一切都已安装并正常工作。所以我把所有东西都放在我们的 FTP 服务器上,我们姐妹公司的人把它拉下来,把所有东西都放在他们网络服务器上的“/apps/program/”目录中。

这就是问题所在。当我尝试从他们的站点安装它时,我得到了 - File, Program.exe.config, has a different computed hash than specified in manifest. 错误。我对其进行了一些测试,我什至在尝试从本地 C: 驱动器以外的网络上的任何网络位置进行安装时遇到该错误。

在 visual studio 中完成初始发布后,我没有更改任何文件(这是我通过搜索此错误找到的答案/原因)。

这可能是什么原因造成的?是否因为我将安装文件夹 URL 设置为最初未发布的位置?

如果需要任何其他信息,请告诉我。

谢谢。

最佳答案

整个周末我都在为此苦苦思索,终于找到了答案。在取消项目签名并删除有问题的文件(一个 xml 文件)上的哈希后,我得到了要安装的程序,但它给了我“Windows Side by Side”错误。我深入研究了 App Cache 文件,它不是配置 .xml 文件,而是托管 clickonce 安装程序的网站上的 HTML 文件之一。事实证明,Web 服务器似乎不喜欢提供 .XML(结果是 .mdb)文件。

This MSDN article最终给了我最终的解决方案:

我必须确保选择了“使用“.deploy”文件扩展名”,这样网络服务器就不会破坏带有它不喜欢的扩展名的文件。

enter image description here

我想不通为什么那个文件的哈希会不同。事实证明它根本不是同一个文件。

关于visual-studio - 传输已发布文件时出现 ClickOnce 错误 "different computed hash than specified in manifest",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19437446/

相关文章:

c# - EnvDTE - 使用 C# 在 Visual Studio 中从 'FindResult 1"窗口获取查找文本结果

c++ - 我们如何防止控制台窗口在 Visual Studio 下显示?

sql-server - 由于 AT TIME ZONE,无法构建 SQL Server 项目

wpf - VSTS Online - 使用 ClickOnce 签署 PFX 密码构建解决方案

c# clickonce 事件?

c# - Visual Studio 2013 中的 ClickOnce 没有网页发布选项

visual-studio - Visual Studio 2013 IDE 响应缓慢

c++ - vs c++ dll - 标量删除析构函数

c# - ClickOnce 应用程序如何知道在哪里检查升级?

ClickOnce 先决条件 - 如何管理先决条件的安装顺序?