Пользовательский загрузчик WiX Burn: событие ExecuteProgress запускается постоянно после того, как пользователь отменил установку

В моем обратном вызове ExecuteProgress, если пользователь отменил установку, он ждет, пока пользователь подтвердит отмену (используя AutoResetEvent) через окно сообщения, и после подтверждения он устанавливает e.Result в Result.Cancel, требуя, чтобы движок Burn отменил установку.

После этого вызывается ExecutePackageComplete обратный вызов, и это правильно. Но после этого обратный вызов ExecutePackageBegin вызывается снова для того же пакета MSI, который я запрашиваю для установки остановки двигателя Burn. А затем снова вызывается ExecuteProgress callback для того же MSI и вечно ждет подтверждения пользователя. (На этот раз нет окна сообщения для подтверждения пользователя.) Как я могу это исправить?


person David Johns    schedule 05.11.2014    source источник
comment
Пожалуйста, предоставьте соответствующую часть журнала записи, найденную во временном каталоге пользователя, для подобных вопросов. Бьюсь об заклад, Burn просто выполняет откат, о чем должен знать ваш БА.   -  person Sean Hall    schedule 05.11.2014
comment
@SeanHall Спасибо. В файле журнала говорится, что Burn выполняет откат. Я исправил свою проблему, различая два состояния: одно состояние, когда пользователь отменил, но еще не подтвердил это (ожидание подтверждения пользователя), и другое состояние, когда пользователь подтвердил отмену. Я изменил обратный вызов ExecuteProgress, чтобы он ждал подтверждения пользователя только в прежнем состоянии.   -  person David Johns    schedule 05.11.2014


Ответы (1)


Не возвращайтесь после обратного вызова, если запрашиваете подтверждение. Ваш БА должен знать об откате — он, вероятно, должен делать что-то по-другому при откате.

person Sean Hall    schedule 05.11.2014