4

我编写了一个我一直在使用的 WiX 自定义 MBA,它嵌入了我安装所需的所有安装包(msis、cabs 和 exe)。但是我现在想做一个轻量级的网络引导程序,它将下载需要安装的包。我以为您可以使用底层的 WiX 引导程序引擎免费获得它,但我想我错了。

我尝试订阅 ResolveSource 事件以获取包的下载 url 并将其下载到本地源位置,但此时似乎为时已晚,因为我的安装失败并出现错误“无法解析文件的源: "(即使下载成功)。

我尝试过的示例:

private void OnResolveSource(object sender, ResolveSourceEventArgs e)
{  
    string localSource = e.LocalSource;
    string downloadSource = e.DownloadSource;

    if (!File.Exists(localSource) && !string.IsNullOrEmpty(downloadSource))
    {
        try
        {
            using (WebClient webClient = new WebClient())
            {
                webClient.DownloadFile(e.DownloadSource, e.LocalSource);
            }
        }

        catch (ArgumentNullException ex)
        {
            e.Result = Result.Error;
        }

        catch (WebException ex)
        {
            e.Result = Result.Error;
        }
    }
}
4

1 回答 1

7

感谢 Rob Mensching 在 wix-users 邮件列表中回答这个问题:

确保您提供的 URL 包(创作最简单,但您可以以编程方式将它们全部设置)然后从 ResolveSource 调用返回 IDDOWNLOAD。

我编辑我的代码如下:

private void OnResolveSource(object sender, ResolveSourceEventArgs e)
{
    if (!File.Exists(e.LocalSource) && !string.IsNullOrEmpty(e.DownloadSource))
        e.Result = Result.Download;
}

将结果设置为Result.Download指示引导程序引擎下载包。无需尝试自己下载文件。

于 2013-02-01T19:49:15.267 回答