我在ClickOnce部署后签署应用程序时遇到了麻烦。
该应用程序是一个winforms项目,具有3个类库项目,并部署到共享文件路径中。
从Visual Studio发布可行,如果我运行应用程序,它会安装得很好,尽管在Windows 10上出现了未被识别的警告:
所以,作为一个愚蠢而有帮助的程序员,我想为我的用户尝试删除警告消息。
该应用程序是一个winforms项目,具有3个类库项目,并部署到共享文件路径中。
从Visual Studio发布可行,如果我运行应用程序,它会安装得很好,尽管在Windows 10上出现了未被识别的警告:
![Windows protected your PC screenshot](https://istack.dev59.com/ZqP3h.webp)
- 第一步是创建签名证书。幸运的是,系统管理员能够为我创建一个内部证书,我也成功地通过阅读这篇文章学会了如何导出它。
- 然后我使用Mage UI签署清单。在这个阶段,我不知道“清单”究竟是什么。找到Mage也是一个问题,因为部署服务器上没有安装Windows SDK。最终我远程登录到部署服务器并从自己的PC上运行了Mage。使用Mage签署随机文件,我最终弄清楚需要签署此答案中提到的所有.application + .manifest文件。
- 此时我遇到了一个
清单中的引用与下载的程序集的标识不匹配
错误,在尝试此问题中提到的10种不同方法后,我开始在这里发布帖子。 - 然后我发现了这篇MSDN文章,他们建议文件在某种程度上是损坏的。哪个文件?比较之前和之后的文件后,我注意到.application文件仍然将.manifest文件的产品密钥设置为“000000000000000”,而不是新签名的产品密钥。
- 所以我回到Mage中重新选择了清单的“应用程序引用”并再次签名。这时我又遇到了另一个错误
找不到路径 \\MyFileShare\Application%20Files\MyApplication_1_0_0_23\MyApplication.exe.manifest
- 最终我弄清楚Mage已经使用urlencoding破坏了文件路径。我在记事本中修复了
%20
为
我肯定做错了什么,微软不可能打算让这么难吧?
TLDR;
有没有一种正确的方法可以运行Mage以一次性签署应用程序,而不必手动编辑文件并多次重新签名?