。NET ClickOnce签名结果在“未知发布者”中

问题描述 投票:4回答:3

我正在努力在.NET 4.5上部署ClickOnce应用程序构建这是事实:

  1. 我有一个有效的Comodo Authenticode证书
  2. 证书已安装在我的本地证书存储中
  3. “签名”选项卡的项目属性显示,应使用证书对清单进行签名(我什至尚未尝试对.NET的程序集进行签名)
  4. 为comodo输入了正确的时间戳服务器URL
  5. 在“发布”选项卡上,设置非常典型:
  6. 发布到UNC路径
  7. 安装文件夹是一个映射到IIS中该路径的URL

但是,无论我做什么,当我使用“立即发布”按钮实际发布ClickOnce应用程序时,所有文件都会被发布,但是当我下载“ Setup.exe”时,它总是说“ Unknown Publisher “。

关于我在做什么错的任何想法?我已经对此进行了数周的研究,并且已经阅读了足够的内容,以至于我在“正确”地进行了操作,但是我只是必须缺少一些小复选框或设置,或者是某些东西。

感谢任何帮助。

-身高

.net clickonce manifest authenticode
3个回答
5
投票
据我所知,“ Unknown Publisher”取消了代码签名,而Visual Studio并未为其提供接口。哦,它[[does具有签名接口,但仅用于清单签名和强名称程序集签名。 This other question也提到了三个签名。

要用组织名称替换“未知发布者”,您必须在.csproj或.vbproj文件中添加一些XML。在关闭</Project>标记之前,您需要调用SignTool.exe,我已将其手动复制到解决方案的主Bin文件夹中(如果没有,它是Windows SDK的一部分)。这是我的样子:

<!-- This section is used for code-signing the application. This should not be confused with manifest signing or with strong-name assembly signing, which can both be done from the Visual Studio interface. --> <Target Name="SignOutput" AfterTargets="CoreCompile"> <PropertyGroup> <TimestampServerUrl>http://timestamp.verisign.com/scripts/timstamp.dll</TimestampServerUrl> <ApplicationDescription>A.Franklin's Awesome App</ApplicationDescription> <SigningCertificateCriteria>/sha1 0c0ff5e29404b7d78q2517f487da0b1a0912c4da</SigningCertificateCriteria> </PropertyGroup> <ItemGroup> <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" /> </ItemGroup> <Exec Command="&quot;$(ProjectDir)..\Bin\SignTool&quot; sign $(SigningCertificateCriteria) /d &quot;$(ApplicationDescription)&quot; /t &quot;$(TimestampServerUrl)&quot; &quot;%(SignableFiles.Identity)&quot;" /> </Target>

要获取我已经在计算机上安装的证书的哈希码(上面的“ 0c0ff5 ...”),我>]

Ran certmgr.msc和已打开的证书–当前用户>个人>证书

    双击我想要的证书,然后单击详细信息选项卡
  1. 使用Ctrl-C复制Thumbprint的值(看起来像“ 0c f0 f5 ...”),
  2. 除了第一个字符
  3. 。此文本框中有一个不可见的字符,该字符会与第一个字符一起复制,以后会弄乱您的脚本。因此,手动键入第一个字符(在这种情况下为“ 0”),然后从该对话框中粘贴值。如果在Visual Studio中收到错误消息“无效的SHA1哈希格式:?0c 0f f5 ...”,则该问号表示该字符不可见。
  4. 手动输入第一个字符,然后从此对话框中粘贴值。删除所有空格,使其看起来像0c0ff5 ...,并使该行看起来像上面的SigningCertificateCriteria代码。
  5. 您也可以手动使用SignTool.exe,但是对我来说,此安装程序在每次编译时都透明地运行。

0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.