如何签署Visual Studio .msi的安装文件

Ale*_*lex 13 c# authenticode visual-studio-2008 code-signing-certificate

我最近从globalsign购买了authenticode证书,但在部署文件时遇到问题.有一些.exe文件由项目生成,然后放入.msi.当我使用signtool签署.exe文件时,证书有效并且运行正常.问题是,当我构建.msi(使用visual studio安装项目)时,.exe文件会丢失其签名.所以我可以在构建后签署.msi,但安装的.exe文件继续整个"未知的发布者"业务.如何在这些文件上保留签名以便在客户端计算机上安装?

Ale*_*lex 14

Visual Studio在编译时创建两个文件夹:obj和bin.事实证明,至少在我的情况下,输出将始终从obj文件夹复制到bin文件夹中.我在bin文件夹中签署可执行文件只是为了让它们被覆盖,然后打包到msi中.在obj文件夹中签署可执行文件解决了这个问题.


gyz*_*unk 13

您可以将以下PostBuildEvent添加到VS安装项目(项目属性):

Windows 8.0:

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a  $(BuiltOuputPath)
Run Code Online (Sandbox Code Playgroud)

Windows 10:

"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /a  $(BuiltOuputPath)
Run Code Online (Sandbox Code Playgroud)

项目属性窗口

有关signtool的用法,请参阅此MSDN文档.您可以使用/ f标志指定签名证书,使用/ p指定证书的密码等

另请注意,$(BuildOuputPath)拼写错误.这是故意的.谢谢微软...

  • 就我而言,signtool.exe 存在于“C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe”中 (4认同)