C# 如何对Visual Studio.msi的安装文件进行签名
我最近从globalsign购买了一个authenticode证书,在为部署签名文件时遇到问题。有两个.exe文件由项目生成,然后放入.msi。当我使用signtool对.exe文件进行签名时,证书是有效的,并且运行正常。问题是,当我构建.msi(使用visual studio安装项目)时,.exe文件会丢失其签名。因此,我可以在.msi生成后对其进行签名,但安装的.exe文件将继续整个“未知发布者”业务。如何保留这些文件上的签名以便在客户端计算机上安装?Visual Studio在编译时创建两个文件夹:obj和bin。结果是,至少在我的例子中,输出总是从obj文件夹复制到bin文件夹中。我对bin文件夹中的可执行文件进行了签名,结果被覆盖,然后打包到msi中。对obj文件夹中的可执行文件进行签名解决了这个问题 您可以将以下PostBuildEvent添加到VS安装项目(项目属性): Windows 8.0:C# 如何对Visual Studio.msi的安装文件进行签名,c#,visual-studio-2008,authenticode,code-signing-certificate,C#,Visual Studio 2008,Authenticode,Code Signing Certificate,我最近从globalsign购买了一个authenticode证书,在为部署签名文件时遇到问题。有两个.exe文件由项目生成,然后放入.msi。当我使用signtool对.exe文件进行签名时,证书是有效的,并且运行正常。问题是,当我构建.msi(使用visual studio安装项目)时,.exe文件会丢失其签名。因此,我可以在.msi生成后对其进行签名,但安装的.exe文件将继续整个“未知发布者”业务。如何保留这些文件上的签名以便在客户端计算机上安装?Visual Studio在编译时创建两
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a $(BuiltOuputPath)
Windows 10:
"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /a $(BuiltOuputPath)
有关signtool的用法,请参阅。您可以使用/f标志指定签名证书,/p指定证书的密码等
另外,请注意$(BuildOuputPath)拼写错误。感谢microsoft…其他选项(我正在做的)是先创建.msi,然后使用pfx(证书)对其进行签名
(我正在使用在globalsign.com上购买的代码签名证书)
打开命令:
运行->powershell
在证书所在的位置运行并保存指纹:
PS C:\Windows\system32>获取PfxCertificate-FilePath。\CompanyCertificate.pfx
如果将得到类似这样的值,则必须在以下执行行中替换值
然后找到singtool.exe所在的位置并转到那里(在我的情况下,Win 10,msi也必须位于同一路径),然后执行以下操作:
PS C:\Program Files (x86)\Windows Kits\10\App Certification Kit> .\signtool.exe sign /f CompanyCertificate.pfx /d "App Description" /p pfxPasswordHere /v /sha1 ABCFEDRABF229B78BF9C40EC47007C1234567890 /t "http://timestamp.comodoca.com/authenticode" MyApplicationSetup.msi
成功签名的文件数:1
警告数量:0
错误数:0
恭喜你成功了
您将在.msi属性下看到此新选项卡:
最后尝试安装:
非常感谢。我曾看到人们试图传达同样的信息,尽管你的回答非常简洁易读。你救了我几个小时:)在我的案例中,signtool.exe出现在“C:\Program Files(x86)\Microsoft SDK\ClickOnce\signtool\signtool.exe”中。对于任何缺少signtool.exe的人,它是。