2015-04-09 2 views
0

У меня есть программа в winforms C#, которая запускает последовательно некоторые инсталляторы или пакеты. Я хочу реализовать кнопку, которая отменяет и откатывает выполнение текущего установщика (точно так же, как когда пользователь нажимает кнопку отмены), то откатывает выполнение всех предыдущих установщиков.Откат выполнения установщика MSI от внешней функции C#

Возможно ли это?

+0

Я не думаю, что вы можете это сделать, см. Https://msdn.microsoft.com/en-us/library/aa371369(v=vs.85).aspx. Вы не можете упаковать все инсталляторы в твой собственный ? – ppetrov

+0

Что значит «упаковать всех инсталляторов в свои»? Включает ли он f.ex. использовать Wix Burn? – Brainless

+0

Да, я думал о таких инструментах, но я не знаю их хорошо, ответ Кристофера кажется хорошим способом начать;) – ppetrov

ответ

2

Возможно, вы захотите посмотреть на загрузчик Windows Installer XML (WiX) Burnstrapper. Вы можете написать собственное приложение для загрузки, которое управляет пользовательским интерфейсом для установки ваших пакетов. Он также имеет шаблоны для размещения транзакций по вашим пакетам и возможности их возврата.

Если вы хотите сделать то, что делаете сейчас, вам нужно зарегистрироваться как внешний пользовательский интерфейс для MSI, а затем использовать MSI API для отмены установки и вызова отката.

+0

Спасибо уже за подсказки. Как отменить запущенную установку с помощью MSI API? – Brainless

+1

Взгляните на: https://msdn.microsoft.com/en-us/library/aa368786(v=vs.85).aspx –