将Authenticode与ClickOnce WPF应用程序一起使用

Jas*_*ams 8 wpf clickonce authenticode

好吧,我做的不对,我需要一些帮助.这是发生了什么:

  1. 我收到了Comodo的"真实"Authenticode证书,我付了钱.
  2. 我正在尝试签署和部署用Visual Studio 2012和.NET 4.5编写的WPF应用程序.
  3. 在项目的属性中,我检查了"签署ClickOnce清单"并选择了我的证书.
  4. 我也在使用Comodo的时间戳服务器(http://timestamp.comodoca.com/authenticode)
  5. 在"发布"选项卡和"先决条件"按钮下,我选中了"创建安装程序以安装必备组件".

当我构建和发布时,一切正常!setup.exe是用我的Comodo证书签名的,所以这很好.此外,该.application文件使用Comodo证书签名,我的公司名称显示为发布者 - 这也很好.

问题出现了:将应用程序下载到客户端后,Windows 8会发出有关不受信任程序(MyProgram.exe)的警告,并且发布者不是我的公司名称.因此,除了实际的可执行文件之外,一切都已签名.

我已经尝试添加在obj\Release\MyProgram.exe上使用signtool.exe的后期构建脚本,但是当我尝试安装应用程序时,我收到一个清单错误,指出哈希值不匹配.换句话说,清单是在构建后事件之前生成的.

如何签署我的.exe并维护ClickOnce清单的完整性?有没有一种简单的方法可以做到这一点,还是我必须手动使用mage.exe(我希望不是)?

Jas*_*ams 10

好吧,没有人跳过这个,但谢天谢地,我明白了!

感谢这个问题:签署EXE时"文件具有与清单中指定的计算哈希值不同"错误

我能够编辑项目文件的XML(卸载项目,然后选择"编辑myproject.csproj")并添加:

  <Target Name="SignOutput" AfterTargets="CoreCompile">
<PropertyGroup>
  <TimestampServerUrl>http://timestamp.comodoca.com/authenticode</TimestampServerUrl>
  <ApplicationDescription>My Project Friendly Name</ApplicationDescription>
  <SigningCertificateCriteria>/n MyCertName</SigningCertificateCriteria>
</PropertyGroup>
<ItemGroup>
  <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" />
</ItemGroup>
<GetFrameworkSdkPath>
  <Output TaskParameter="Path" PropertyName="SdkPath" />
</GetFrameworkSdkPath>
<Exec Command="&quot;$(SdkPath)bin\signtool&quot; sign $(SigningCertificateCriteria) /d &quot;$(ApplicationDescription)&quot; /t &quot;$(TimestampServerUrl)&quot; &quot;%(SignableFiles.Identity)&quot;" />
Run Code Online (Sandbox Code Playgroud)

我不得不将signtool.exe文件移动到SDK文件夹(C:\ Program Files(x86)\ Microsoft SDKs\Windows\v8.0A\bin,在我的情况下),但之后它就像一个魅力!

我希望将来可以帮助别人.