发布时在clickonce应用程序中签名可执行文件

Rob*_*ler 7 c# code-signing-certificate visual-studio-2013

我在Visual Studio 2013中有一个#net项目.我已经成功签署了清单,告诉Visual studio也签署了程序集.

但是,应用程序exe文件未被签名.谷歌搜索后,我将以下内容添加到post build事件中

"C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "$(ProjectDir)certificate.pfx" /p mypassword "$(ProjectDir)obj\Debug\myapp.exe"
Run Code Online (Sandbox Code Playgroud)

并尝试过

"C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "$(ProjectDir)certificate.pfx" /p mypassword "$(ProjectDir)bin\Debug\myapp.exe"
Run Code Online (Sandbox Code Playgroud)

这似乎签署了exe,但现在我的应用程序将无法启动并给出错误:

文件,ECG Cloud Holter Assistant.exe,具有与清单中指定的不同的计算哈希值.

所以我认为我需要它生成清单之前签署exe ,但我该怎么做?

如果我不包含post build命令,则应用程序运行正常,但发布者未知警告.

Age*_*nix 7

尝试给出一个镜头:
1.右键单击winforms项目并选择"卸载项目".
2.再次右键单击项目,然后选择"编辑(yourprojectname).csproj".
3.转到文件底部,在结束"Project"标记之前添加以下部分:

<Target Name="AfterCompile">
   <Exec Command="C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "$(ProjectDir)certificate.pfx" /p mypassword "$(ProjectDir)obj\Debug\myapp.exe" />
</Target>
Run Code Online (Sandbox Code Playgroud)

4.保存proj文件并关闭它.
5.再次右键单击项目并重新加载.

现在,如果您构建项目,您将看不到有关在输出窗口中签署应用程序可执行文件的任何信息.它只会在您发布时执行,并且不会有日志记录让您知道它已签名.你怎么知道它是否有效?转到您发布到的文件夹,然后查看Application Files文件夹.在新版本的文件夹中找到应用程序可执行文件.右键单击它,选择属性.查找名为"数字签名"的选项卡.如果找不到,则不签名.如果你看到它,请转到该标签; 它将显示签名列表和证书的签名者.您可以双击签名者,然后查看签名证书.

我有一个类似的问题,并能够在这篇博客文章的帮助下弄明白:https: //robindotnet.wordpress.com/2013/02/24/windows-8-and-clickonce-the-definitive-answer-2 /