使用 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
回调,当在捆绑包中编写的下载位置失败时,它可以在其中提供备用下载位置。
我想为我的 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
回调,当在捆绑包中编写的下载位置失败时,它可以在其中提供备用下载位置。