使用 WiX,如何在初始 URL 下载失败时下载依赖项

Using WiX, how can I download a dependency when the initial URL failed to download

我想为我的 WiX 包提供备用下载 URL 以获取依赖项。我无法找到关于这种情况的文档,所以我什至不知道在 hackish Custom Action 解决方法之外是否有可能。现在,当任何尝试的下载失败时,安装都会按预期失败。如果初始尝试失败,我希望它简单地尝试下一个 URL(s) 与 public 或内部镜像,直到它成功或从 none 工作中硬失败。我已经实现了正常的依赖包。我只是不确定从这里到哪里才能实现这种设计。如果可能的话,我想在自定义操作之外进行。

当前代码示例:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    <Fragment>
<!-- Check registry keys for Microsoft Visual C++ 2005 Redistributable -->
    <util:RegistrySearch Root="HKLM"
                         Key="SOFTWARE\Classes\Installer\Productsaf2a8da7e60d0b429d7e6453b3d0182"
                         Result="exists"
                         Variable="MVC2005Present_x64"
                         Win64="yes"/>

<!-- Package to deploy Microsoft Visual C++ 2005 Redistributable (x64) -->
      <ExePackage Id="MVC2005Exe_x64"
                  Name="Microsoft Visual C++ 2005 Redistributable Package (x64)"
                  Cache="no"
                  Compressed="no"
                  PerMachine="yes"
                  DownloadUrl="https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE"
                  Permanent="yes"
          InstallCommand="/q"
          RepairCommand="/q"
          DetectCondition="MVC2005Present_x64"
          InstallCondition="DeployDependencies = 1">
        <RemotePayload CertificatePublicKey="5C499B10F7EF186DC729991A262AB52066423909"
                       CertificateThumbprint="93859EBF98AFDEB488CCFA263899640E81BC49F1"
                       Description="Microsoft Visual C++ 2005 Redistributable (x64) Setup"
                       Hash="EE916012783024DAC67FC606457377932C826F05"
                       ProductName="Microsoft Visual C++ 2005 Redistributable (x64)"
                       Size="3175832"
                       Version="6.0.2900.2180" />
        <ExitCode Behavior="scheduleReboot" Value="1641" />
        <ExitCode Behavior="scheduleReboot" Value="3010" />
      </ExePackage>
    </Fragment>
  </Wix>

Burn 支持每个负载下载一次 URL。自定义引导程序应用程序获得一个 OnResolveSource 回调,当在捆绑包中编写的下载位置失败时,它可以在其中提供备用下载位置。