【问题标题】:digital signatures added by Insignia conflicting with PatchCertificates?Insignia 添加的数字签名与 PatchCertificates 冲突?
【发布时间】:2017-03-31 16:10:20
【问题描述】:

我正在探索 WiX 上下文中的 数字签名 功能(windows 安装程序 MSI 和 windows 补丁 MSP >)。
就我而言,我正在生成一个带有非嵌入式“Data1.cab”的 MSI。

据我所知,重要的是:

  • 签署任何外部出租车
  • 在 MSI 上写上这些出租车的数字签名
  • 在 MSI 上签名

我正在关注官方 WiX insignia documentation 以在 Visual Studio 2015 中使用:
所以在 *.wixproj 文件中我添加了以下部分。
为简洁起见,省略了 signtool.exe 的其他命令行参数。

<Import Project="$(WixTargetsPath)" />
<PropertyGroup>
  <SignOutput>true</SignOutput>
</PropertyGroup>
<Target Name="SignMsi">
  <Exec Command="signtool.exe sign /a &quot;%(SignMsi.FullPath)&quot;" />
</Target>
<Target Name="SignCabs">
  <Exec Command="signtool.exe sign /a &quot;%(SignCabs.FullPath)&quot;" />
</Target>

到目前为止一切顺利。
但我需要PatchCertificates 以备将来使用UAC patches
所以在我的 *.wxs 源文件中我有:

<Product ... >
<Package ... />

<Media Id="1" Cabinet="Data1.cab" EmbedCab="no"/>

<PatchCertificates>
  <DigitalCertificate SourceFile="$(env.MY_CERTIFICATE_DIRECTORY)/cert256.pem" Id="patchcert"/>
</PatchCertificates>

</product>

当我现在在 Visual Studio 中编译项目时,我总是收到以下错误:

C:\Program Files (x86)\WiX Toolset v3.10\bin\insignia.exe -im C:\src\Test\setup\obj\Release\bin\MyProduct.msi -out C:\src\Test\setup\obj\Release\bin\MyProduct.msi
Insignia.exe(0,0): error INSG0001: Cannot find the requested object.
Done building project "MyInstaller.wixproj" -- FAILED.

--

观察:

  • 这两个功能都运行良好
  • 但是如果我将两者结合起来编译会失败

它们是否相互不兼容?

--

其他关键字:

  • WiX 属性:DigitalCertificate、PatchCertificates、DigitalSignature
  • MSI 表:MsiDigitalCertificate、MsiPatchCertificate、MsiDigitalSignature
  • 通用术语:数字证书、数字签名、WiX、徽章、还愿、公钥

--

更新:
可能是因为这个错误(参见sourceforge,参见github)(2013 年报告)?

【问题讨论】:

    标签: wix digital-signature


    【解决方案1】:

    我找到了解决方案。

    我包含PEM 格式的证书:

    <PatchCertificates>
      <DigitalCertificate SourceFile="$(env.MY_CERTIFICATE_DIRECTORY)/cert256.pem" Id="patchcert"/>
    </PatchCertificates>
    

    但我们必须使用DER格式的证书:

    <PatchCertificates>
      <DigitalCertificate SourceFile="$(env.MY_CERTIFICATE_DIRECTORY)/cert256_DER.cer" Id="patchcert"/>
    </PatchCertificates>
    

    另请参阅此相关问题:DigitalCertificate (for UAC patches) - format specification?

    PS:
    我只是假设一些错误不兼容走错了路,因为特定的错误消息根本没有帮助。
    而且奇怪的是,只有在结合这两个功能时才会显示错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 2016-05-03
      • 2014-11-13
      • 2019-04-17
      • 1970-01-01
      • 2015-02-26
      相关资源
      最近更新 更多