2017-03-31 69 views
1

我正在探索的數字簽名功能在維克斯環境(Windows安裝程序MSI和Windows補丁MSP)。
在我的情況下,我生成一個非嵌入式「Data1.cab」的MSI。Insignia添加的數字簽名與PatchCertificates衝突?

什麼,我已經明白這是很重要的:

  • 跡象任何外部駕駛室
  • 題微星與駕駛室的數字簽名
  • 標誌符號微星本身

我在官方的WiX insignia documentation以下在visual studio 2015中使用:
所以在* .wixproj文件中我添加了f下一節。
爲簡潔起見,省略了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. 

-

觀察:

  • 既fe對自己atures工作正常
  • ,但如果我將二者結合起來編譯失敗

是它們彼此不兼容?

-

額外的關鍵字:

  • WiX的屬性:DigitalCertificate,PatchCertificates,的DigitalSignature
  • MSI表:MsiDigitalCertificate,MsiPatchCertificate,MsiDigitalSignature
  • 一般條款:數字證書,數字簽名,維克斯,徽章,奉獻,公鑰

-

更新:
是它可能是因爲這個bug(見 sourceforge,看 github)(2013年報道)的?

回答

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:
ij由於特定的錯誤消息根本沒有任何幫助,所以假設某些錯誤不兼容錯誤地使用了錯誤信息。
也很奇怪,只有組合這兩個功能時才顯示錯誤。