Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在生成事件中与WiX一起使用Visual Studio命令提示符_Wix - Fatal编程技术网

在生成事件中与WiX一起使用Visual Studio命令提示符

在生成事件中与WiX一起使用Visual Studio命令提示符,wix,Wix,我一直在尝试使用以下代码在后期生成事件中对文件进行签名 signtool sign /t http://timestamp.verisign.com/scripts/timestamp.dll /f "E:\Products\Tools\DigitalId\Certificate.pfx" /p 1501ocbc /d "Server" "E:\Products\Setup\Server_Setup\ServerSetup\bin\Release\en-US\ServerSetup.msi"

我一直在尝试使用以下代码在后期生成事件中对文件进行签名

signtool sign /t http://timestamp.verisign.com/scripts/timestamp.dll /f "E:\Products\Tools\DigitalId\Certificate.pfx" /p 1501ocbc /d "Server" "E:\Products\Setup\Server_Setup\ServerSetup\bin\Release\en-US\ServerSetup.msi"

这将用VisualStudio命令提示符进行签名,类似的代码适用于C++项目。但是,当构建安装程序并使用构建后事件对代码进行签名时,我得到一个代码错误9009。经过大量调试,我得出结论,WiX正在使用普通的命令提示符。如何在WiX中使用Visual Studio工具打开

cmd.exe


或者还有其他方式来签署我的软件包吗?

似乎有一种内置的方式来签署MSI文件,它似乎可以正确地使用SignTool:。

  • 注册证书并使用hashkey(哈希键)/sha1以确保证书良好(检查浏览器internetoptions/content/certificate)
  • SignTool路径-按照Simon Mourier的建议显式设置,或将
    SignTool.exe
    放在可访问的路径中
  • 选择“生成后操作”-在完成MSI文件上的所有操作后,应该对MSI文件进行签名。对MSI(插入/更新属性)执行的任何操作都将撤消签名

您可以这样定义事件:

"%programw6432%\microsoft sdks\windows\v7.1\bin\signtool.exe" sign /t etc.. 

注意:您需要根据安装(程序文件、Windows SDK版本等)调整路径,或者您也可以定义自己的环境变量。

您好,我看到了,但它说“Insignia是一种用于使用外部CAB签名的数字签名来刻写MSI的工具。”我没有外部CAB,我的是嵌入在微星,我只想签署微星本身。感谢您的帮助是的,但进一步阅读,部分内容涉及使用SignTool.exe,这意味着您可以使用它进行自己的签名?为什么不这样定义事件:
%programw6432%\microsoft SDK\windows\v7.1\bin\SignTool.exe“sign/t等”
?(根据您的安装调整路径)谢谢@simon,它工作得非常好。我不知道我为什么不试一下……:)那我就贴出来回答:)