4

我正在使用 exePackage 属性来下载一个 exe 包——实际上是来自微软的 VSTO 运行时。

它无法获得包裹。

我相信这是将其添加到 CHAIN 的正确方法

    <ExePackage Id="VSTORuntime" SourceFile="vstor_redist.exe" Permanent="yes" Vital="yes" Cache="no" Compressed="no"
            DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=158917"
            PerMachine="yes"
            InstallCommand="/q /norestart"
            DetectCondition="VSTORFeature"
            InstallCondition="NOT VSTORFeature OR NOT (VSTORVersionV4R >=v10.0.40303) OR NOT (VSTORVersionV4 >=v10.0.21022)" />

这是日志文件部分。它这样做了大约三遍。

[0D98:06A8][2013-07-22T11:47:31]w343: Prompt for source of package: VSTORuntime, payload: VSTORuntime, path: F:\vstor_redist.exe
[0D98:06A8][2013-07-22T11:47:31]i338: Acquiring package: VSTORuntime, payload: VSTORuntime, download from: http://go.microsoft.com/fwlink/?LinkId=158917
[16A0:0BE4][2013-07-22T11:47:37]e000: Error 0x80070490: Failed to find expected public key in certificate chain.
[16A0:0BE4][2013-07-22T11:47:37]e000: Error 0x80070490: Failed to verify expected payload against actual certificate chain.
[16A0:0BE4][2013-07-22T11:47:37]e000: Error 0x80070490: Failed to verify signature of payload: VSTORuntime
4

3 回答 3

2

当引导程序包使用一个版本的 exe 包编译时,我遇到了这个问题,但是当您尝试运行它时,另一个版本位于安装程序可执行文件旁边。我怀疑当您编译捆绑包时,Burn 会自动从源文件中提取证书信息。

例如,如果您的Setup.exe文件在其中C:\Downloads并且C:\Downloads还包含与vstor_redist.exe您构建时存在的版本不同的版本Setup.exe,您将看到此错误。vstor_redist.exe您可以通过从C:\Downloads-删除来解决此问题,Setup.exe然后从您指定的 URL 下载正确的版本。

于 2013-11-12T12:46:22.947 回答
2

我认为您需要在 RemotePayload 标记中指定证书密钥,如下所示:

<ExePackage Id="VSTORuntime" SourceFile="vstor_redist.exe" Permanent="yes" Vital="yes" Cache="no" Compressed="no"
        DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=158917"
        PerMachine="yes"
        InstallCommand="/q /norestart"
        DetectCondition="VSTORFeature"
        InstallCondition="NOT VSTORFeature OR NOT (VSTORVersionV4R >=v10.0.40303) OR NOT (VSTORVersionV4 >=v10.0.21022)">
<RemotePayload ProductName="Windows Installer 4.5"
               Description="Windows Installer 4.5 Setup"
               CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8"
               CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1"
               Hash="86E1CC622DBF4979717B8F76AD73220CDB70400B"
               Size="3327000"
               Version="4.5.0.0" />
</ExePackage>

这只是一个想法...或尝试使用提琴手来查找它们是否是错误 404 或类似的东西...

于 2013-10-10T18:59:22.983 回答
0

微软似乎已经更新了该 URL 后面的包,并更改了用于对其进行签名的证书。这与提供恶意文件的攻击者无法区分,因此您唯一能做的就是使用更新的证书从新文件构建一个新包。在 3.x 的更高版本中,您必须指定SuppressSignatureVerification="no"何时不使用RemotePayload并且您想要签名验证而不是哈希验证。

于 2022-01-13T15:15:25.913 回答