Я работаю над приложением, которое работает поверх пакета WiX и обменивается данными через встроенный канал (используя ManagedBundleRunner) и получает обновления о ходе выполнения и ошибках.
В настоящее время я использую стандартный загрузчик WiX. Однако я буду создавать собственный управляемый загрузчик для реализации пользовательского поведения.
Частью этого нового поведения является двунаправленная связь моего приложения с загрузчиком.
Изучив исходный код WiX (особенно движок Burn), я предложил два подхода:
1) создать канал внутри управляемого загрузчика и общаться с приложением, используя собственный протокол
2) повторно использовать существующий канал связи, предоставляемый движком Burn (m_pEngineState->embeddedConnection.hPipe
)
Однако оба подхода имеют преимущества и недостатки. Повторно используя существующий канал, используемый механизмом записи и ManagedBundleRunner, у меня уже будет инфраструктура для связи. Однако это потребует модификации движка Burn.
Создание отдельного канала связи и протокола позволяет загрузчику и моему приложению взаимодействовать, не затрагивая движок Burn. С другой стороны, мне пришлось бы создавать всю инфраструктуру для приема и отправки сообщений.
Какой рекомендуемый подход в этом случае?