【问题标题】:Use the Visual Studio command prompt with WiX in a build event在构建事件中使用带有 WiX 的 Visual Studio 命令提示符
【发布时间】:2013-01-17 10:39:33
【问题描述】:

我一直在尝试使用以下代码在构建后事件中签署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"

这将使用 Visual Studio 命令提示符进行确认,类似的代码适用于 C++ 项目。但是,在构建设置并使用构建后事件对代码进行签名时,我收到代码错误 9009。经过多次调试,我得出结论,WiX 使用的是普通命令提示符。如何让 WiX 中的cmd.exe 使用 Visual Studio 工具打开?

或者还有其他方法可以在我的包裹上签名吗?

【问题讨论】:

  • 为什么不这样定义事件:"%programw6432%\microsoft sdks\windows\v7.1\bin\signtool.exe" sign /t etc..? (调整安装路径)
  • 谢谢@simon,它工作得很好。我不知道为什么我没有尝试..:)
  • 我会发布作为答案然后:)

标签: wix


【解决方案1】:

你可以这样定义事件:

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

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

【讨论】:

    【解决方案2】:

    似乎有一种内置的 MSI 文件签名方式似乎可以与 SignTool 一起正常工作:Insignia

    【讨论】:

    • 您好,我看到了,但它说“Insignia 是一种用于在 MSI 上写入其外部 CAB 所使用的数字签名的工具。”我没有外部出租车,我的嵌入在 MSI 中,我只想签署 MSI 本身。感谢您的帮助
    • 是的,但进一步阅读,其中一部分涉及使用 SignTool.exe,这意味着您可以使用它来进行自己的签名?
    【解决方案3】:
    • 注册证书并使用/sha1 hashkey - 只是为了确保证书是好的(检查 browser-internetoptions/content/certificate)
    • SignTool 路径 - 按照 Simon Mourier 的建议使其明确,或将 signtool.exe 放在可访问的路径中
    • 选择构建后操作 - 在完成对 MSI 文件的所有操作后,您应该对 MSI 文件进行签名。对 MSI(INSERT/UPDATE 属性)的任何操作都将撤消签名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多