ClickOnce设计我们的可执行文件并说"Unknown Publisher"

Ana*_*tts 17 .net deployment clickonce

我们正在开发一个通过ClickOnce部署的应用程序.我们有一个VeriSign代码签名证书,我们用它来签署我们的应用程序(通过signtool.exepost-build)和ClickOnce清单.我们目前有两个与签名有关的问题:

  1. 我们正在使用我们的证书签署.exe.构建我们的应用程序后,我们可以看到它已签名(例如,通过"signtool verify/pa TheExecutable.exe").但是在通过ClickOnce安装应用程序后,.exe不再签名.

  2. 我们正在使用我们的证书签署ClickOnce清单.但是当我们尝试通过ClickOnce安装应用程序时,ClickOnce安装程序会显示"Unknown Publisher".

问题#1总是发生.问题#2有时会神秘地消失,但此后不久就会回来,我们已经持续了几个星期了.

有任何想法吗?

Ana*_*tts 14

好吧,解决了这个问题的1/2的谜团:ClickOnce从中获取应用程序清单bin,但是从实际的EXE中获取obj.然后,为了分发您签名的exe,您必须在obj目录中签名该文件.

编辑:这是另一半.安装.NET 4.5 Beta会破坏ClickOnce签名/验证,即使在VS2010中也是如此.

  • 你太棒了.我点击的另一件事是,一旦签名,clickonce清单失败,"<Filename>,有一个不同于清单中指定的计算哈希",根据这个人的博客帖子:http://blogs.msdn.com/b/gauravb/archive/ 2008/10/06/clickonce-filename-has-a-different-computed-hash-than-specified-in-manifest.aspx需要编辑Microsoft.Common.targets并插入行"_CopyManifestFiles;" 在"PublishOnlyDependsOn"部分中. (2认同)

mik*_*esl 7

以下是我处理清单签名和签署exe的方法.我将它添加到我的.csproj文件的底部(在文本编辑器中编辑它).

  <Target Name="AfterBuild">
    <CallTarget Targets="SignOutput" />
    </Target>
    <Target Name="SignOutput">
    <PropertyGroup>
      <TsUrl>http://timestamp.comodoca.com/rfc3161</TsUrl>
    </PropertyGroup>
    <ItemGroup>
      <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\myappname.exe" />
    </ItemGroup>
    <Exec Command="signtool.exe sign /n &quot;My Company Name LLC&quot; /tr $(TsUrl) &quot;%(SignableFiles.Identity)&quot;" />
  </Target>
Run Code Online (Sandbox Code Playgroud)