我处于一个有趣的情况,我维护一个主要由我们的姐妹公司使用和分发的程序的代码。我们已准备好将该计划分发给所有第三方用户,因为从技术上讲,这是我们的姐妹公司计划,我们希望将其托管在他们的网站上。 (为了不相同,我将在任何地方使用'program'而不是实际的应用程序名称,并使用'www.SisterCompany.com'而不是实际的URL。)
所以我准备好了,设置发布设置以检查程序启动时的更新,所需的最低版本,并将Insallation Folder URL和Update Location设置为“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设置为最初未发布的位置吗?
如果需要任何其他信息,请与我们联系。
感谢。
答案 0 :(得分:5)
在整个周末对抗这个问题之后,我终于找到了答案。在取消签名项目并删除有问题的文件(一个xml文件)上的哈希之后,我得到了安装程序,但是它给了我'Windows并排'错误。我钻进App Cache中的文件是,而不是config .xml文件,它是来自网站上的clickonce安装程序托管的HTML文件之一。事实证明,Web服务器似乎不喜欢提供.XML(或.mdb)文件。
This MSDN article最终给了我最终解决方案:
我必须确保选中“使用”.deploy“文件扩展名”,以便网络服务器不会破坏带有它不喜欢的扩展名的文件。
我无法弄清楚为什么一个文件的哈希会有所不同。事实证明它甚至根本不是同一个文件。
答案 1 :(得分:0)
有可能其中一个FTP传输是在文本模式下进行的,而不是二进制文件?
答案 2 :(得分:0)
对我来说,问题是.config转换是在生成清单后完成的。
答案 3 :(得分:0)
对于其他任何仍然遇到麻烦的人,五年后:
第一个问题是配置MIME类型,在nginx(/etc/nginx/mime.types)上应该如下所示:
application/x-ms-manifest application
请参阅Click Once Server and Client Configuration。
我遇到的问题是我使用git来处理对服务器的推送,即
git remote add live ssh://user@mybox/path/to/publish
git commit -am "committing...";git push live master
对大多数事情都很有用,但它可能被注册为"更改,"这阻止了应用程序在本地安装。一旦我开始使用scp:
scp -r * user@mybox/path/to/dir/
它毫无障碍地工作。
遗憾的是,没有很多有用的信息。