Отмена установки и откат с помощью пользовательского интерфейса 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, он увидит, что вы установили результат для отмены и запустите процесс отката (или выполните все действия по отмене в этом контексте).