В основном вы используете делегат ExternalUIRecord, это обратный вызов, который обрабатывает каждый аспект пользовательского интерфейса. Если вы зарегистрируетесь, чтобы обрабатывать пользовательский интерфейс, вы делаете все это, а не просто прогресс, поэтому вам нужно иметь дело с ошибками, диалоговыми окнами «Файлы в использовании» и т. Д.
Обратный вызов даст вам записи о Перечисление InstallMessage, которое расскажет вам, что они собой представляют. Чтобы инициализировать это, вы вызываете SetExternalUI для обратного вызова, основанного на записи. Затем установите MSI из того же потока с помощью вызова установки.
Это C++, но дает общий план все:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb309215(v=vs.85).aspx
, как это делает для не звукозаписывающей обратного вызова:
https://msdn.microsoft.com/en-us/library/aa368786(v=vs.85).aspx