Как мне справиться с ManagedBootstrapperApplicationHost и перезагрузить/перезапустить в установщике WiX?

Я использую WiX Burn для установки в соответствии с требованиями нашего проекта, и я использовал ManagedBootstrapperApplicationHost для создания пользовательского пользовательского интерфейса. Я проверяю версию установщика Windows и устанавливаю ее в качестве предварительного условия, но для этого требуется перезагрузка.

Как я могу обработать перезагрузку в коде?

Я попытался проверить это в следующем коде, но значение e.status в случае перезапуска также равно 0.

Код

private void PlanComplete(object sender, PlanCompleteEventArgs e)
{
    logger.LogInfoMessage("-------------->>  "+ e.Status.ToString());
    if (Hresult.Succeeded(e.Status))
    {
        this.root.PreApplyState = this.root.State;
        this.root.State = InstallationState.Applying;
        WixBA.Model.Engine.Apply(this.root.ViewWindowHandle);
    }
    else
    {
        this.root.State = InstallationState.Failed;
    }
}

person Gaurav    schedule 10.04.2013    source источник


Ответы (1)


Механизм вернется, если потребуется перезагрузка в обратном вызове ApplyComplete() для ваших приложение начальной загрузки. В этот момент вы можете решить либо принять перезапуск, либо вернуть Result.Restart из обратного вызова ApplyComplete().

В качестве альтернативы вы можете предложить пользователю в диалоговом окне завершения или что-то еще, чтобы дать им возможность принять перезапуск или нет. В этом случае вы можете вернуть Result.Restart из обратного вызова Shutdown(), и движок выполнит перезапуск после выхода вашего приложения начальной загрузки.

Я чаще всего использую второй вариант в своих приложениях начальной загрузки.

person Rob Mensching    schedule 10.04.2013