ClickOnce部署恐怖

时间:2017-06-21 08:11:12

标签: c# winforms visual-studio-2015 clickonce mage

我在ClickOnce部署后签署应用程序时遇到问题。

该应用程序是一个包含3个类库项目的winforms项目,并部署到共享文件路径。

从Visual Studio发布工作,如果我运行应用程序,它安装得很好,尽管Windows 10中有关于它无法识别的警告: Windows protected your PC screenshot

因此,作为一个愚蠢的帮助程序员,我想我会尝试删除用户的警告信息。

  • 第一步是创建签名证书。幸运的是,系统管理员可以为我做一个内部证书,我设法找出如何导出它阅读this
  • 然后我使用Mage UI签署清单。什么"显示"在这个阶段我完全不知道。在哪里可以找到Mage也是一个问题,因为部署服务器上未安装Windows SDK。我最终进入部署服务器并从我自己的PC上运行Mage。使用Mage签署随机文件我最终得出结论,我需要签署this answer文件结构中提到的所有.application + .manifest文件。
  • 此时我遇到Reference in the manifest does not match the identity of the downloaded assembly错误,经过this question中提及的10个不同的事情后,我开始在这里发帖。
  • 然后我发现this MSDN article他们建议文件在某种程度上是腐败的。哪个文件?在比较之前和之后的文件后,我发现.application文件仍然有产品密钥=" 000000000000000" .manifest文件而不是新签名的产品密钥。
  • 所以我回到Mage并重新选择了#34; Application Reference"清单并再次签署。此时我收到了另一个错误could not find a part of the path \\MyFileShare\Application%20Files\MyApplication_1_0_0_23\MyApplication.exe.manifest
  • 最终我发现Mage使用urlencoding令人愉快地破坏了文件路径。我在记事本中将%20修改为,并在Mage AGAIN中辞职并且有效!!! {/ li>

当然,我做错了什么,微软并不打算这么做?

TLDR;

运行Mage在1次点击中签署应用程序的正确方法是什么,而不必手动编辑文件并多次辞职?

2 个答案:

答案 0 :(得分:0)

根据我的经验,自动化工具适用于ClickOnce及其相关工具的所有细节,但手工操作是一项真正的挑战。

对我来说非常有用的资源是Walkthrough: Manually Deploying a ClickOnce ApplicationWalkthrough: Manually Deploying a ClickOnce Application that Does Not Require Re-Signing and that Preserves Branding Information

选项:

  • 使用Visual Studio提供的自动化工具来签署和部署您的应用程序。 (它也有缺点,但至少它有效,有点);
  • 像现在一样,花费大量时间自动化和调整流程。最后,您将从中受益,因为您可以更好地控制最终结果;
  • 使用其他部署方法,例如MSI。

答案 1 :(得分:0)

正如Marco Guignard在评论中指出的那样,可以导出从任何地方创建的证书,并将其导入您的个人商店,以便在Visual Studio中使用。

在Visual Studio中签名(pictures)并设置单独的发布+安装位置可以让我完全不需要使用法师!