Отмена установки и откат с помощью пользовательского интерфейса Bootstrapper

Я использую Wix 3.7. Я пытаюсь создать загрузчик wix burn, который устанавливает мою MSI. Я добавил две кнопки в моем интерфейсе BA для установки и отмены. Я использую C# для дизайна BA BA.

Я добавил следующий код в кнопку "Установить" для запуска установки.

  MySampleBA.Model.Engine.Detect();
  MySampleBA.hwnd = IntPtr.Zero;          
  MySampleBA.Model.Bootstrapper.PlanBegin += this.PlanBegin;
  MySampleBA.Model.Bootstrapper.DetectPackageComplete += this.DetectedPackage;
  MySampleBA.Model.Bootstrapper.DetectComplete += this.DetectComplete;
  MySampleBA.Model.Bootstrapper.PlanPackageBegin += this.PlanPackageBegin;
  MySampleBA.Model.Bootstrapper.PlanComplete += this.PlanComplete;
  MySampleBA.Model.Bootstrapper.ExecuteMsiMessage += this.ExecuteMsiMessage;
  MySampleBA.Model.Bootstrapper.ExecuteProgress += this.ApplyExecuteProgress;
  MySampleBA.Model.Bootstrapper.PlanMsiFeature += this.PlanMsiFeature;
  MySampleBA.Model.Bootstrapper.PlanPackageComplete += this.PlanPackageComplete;
  MySampleBA.Model.Bootstrapper.Progress += this.ApplyProgress;
  MySampleBA.Model.Bootstrapper.CacheAcquireProgress += this.CacheAcquireProgress;
  MySampleBA.Model.Bootstrapper.CacheComplete += this.CacheComplete;
  MySampleBA.Model.Bootstrapper.Error += this.ExecuteError;
  MySampleBA.Model.Bootstrapper.ExecutePackageComplete += this.ExecuteComplte;

и запустите установку с помощью

  MySampleBA.Model.Engine.Plan(LaunchAction.Install);
  MySampleBA.Model.Engine.Apply(MySampleBA.hwnd);

Установка работает нормально. Но у меня проблема с отменой установки в середине.

Я видел ссылку отката приложения начальной загрузки. Но я не могу получить представление о IDCANCEL и о том, как вызвать событие Error от нажатия кнопки.

Кто-нибудь может подсказать, как остановить установку, нажав кнопку отмены, которая в BA UI подробно?

1 ответ

Решение

Многие из обратных вызовов (как Progress) предоставит аргументы (например, ProgressEventArgs) к вашему приложению начальной загрузки. В объекте args вы можете увидеть Result имущество. Для отмены установите Result собственность на Result.Cancel, Когда обратный вызов возвращается к Burn Engine, он увидит, что вы установили результат для отмены и запустите процесс отката (или выполните все действия по отмене в этом контексте).

Другие вопросы по тегам