托管引导程序应用程序更新DetectUpdateBegin

时间:2013-10-08 22:08:51

标签: wix

我使用WiX Source \ Setup \ WixBA作为自定义托管引导程序应用程序的起点。

我试图了解UpdateCommand的工作方式,但我甚至看不到DetectUpdateBegin方法被解雇。

我看到DetectComplete方法被解雇,但直接设置this.State = UpdateState.Current而不检查更新。

我错过了什么?

最终我试图让Bootstrapper查询远程服务器并下载自己的更新版本,而不必再次将更新的bootstrapper.exe分发给客户端。

=====UpdateViewModel=====

public UpdateViewModel(RootViewModel root)
{
    this.root = root;
    CustomBA.Model.Bootstrapper.DetectUpdateBegin += DetectUpdateBegin;
    CustomBA.Model.Bootstrapper.DetectComplete += DetectComplete;

    this.State = UpdateState.Initializing;

    this.worker = new BackgroundWorker();
    this.worker.DoWork += new DoWorkEventHandler(worker_DoWork);
}

private void DetectUpdateBegin(object sender, Microsoft.Tools.WindowsInstallerXml.Bootstrapper.DetectUpdateBeginEventArgs e)
{
    CustomBA.Model.LogMessage("[DEBUG-Update] DetectUpdateBegin: " + e.UpdateLocation);
    this.State = UpdateState.Checking;
    this.worker.RunWorkerAsync(e.UpdateLocation);
}

private void DetectComplete(object sender, Microsoft.Tools.WindowsInstallerXml.Bootstrapper.DetectCompleteEventArgs e)
{
    CustomBA.Model.LogMessage("[DEBUG-Update] DetectComplete: ");
    // If we never started checking, assume we're up to date.
    if (UpdateState.Initializing == this.State)
    {
        this.State = UpdateState.Current;
    }
}

=========================

1 个答案:

答案 0 :(得分:0)

除非您DetectUpdateBegin中定义了Update标记,否则不会触发Bundle.wxs方法。

添加以下内容解决了问题:

<Update Location="http://myserver/MyApp/updatefeed.xml"/>