Insignia添加的数字签名与PatchCertificates相冲突?

时间:2017-03-31 16:10:21

标签: wix digital-signature

我在 WiX 上下文(Windows安装程序 MSI 和Windows补丁 MSP 中探索数字签名的功能>)。
在我的情况下,我正在使用非嵌入式“Data1.cab”生成MSI。

根据我的理解,重要的是:

  • 签署任何外部驾驶室
  • 用MSI标记这些出租车的数字签名
  • 在MSI上签名

我正在关注官方WiX insignia documentation,以便在2015年的Visual studio中使用:
所以在* .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年报道)?

1 个答案:

答案 0 :(得分: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:
假设某些 bug 不兼容,我的错误轨道因为特定的错误消息根本没有帮助。
而且奇怪的是,只有在组合这两个特征时才会显示错误。