MsiExec captura de progreso

Estoy escribiendo una pequeña aplicación para instalar algún producto y desinstalar otra en modo silencioso.
Cada producto tiene su archivo MSI y nada más, y mi manifiesto de aplicación indica que debe ejecutarse con privilegios de administrador.
Es bastante fácil de ejecutarmsiexec con los argumentos adecuados para cumplir mi tarea (solo un montón de código) y todo funciona bien.
De todos modos, algunos paquetes tardan mucho tiempo en terminarse y, en algún viejo usuario de PC, está preguntando si algo está sucediendo en segundo plano o si está bloqueado.
Entonces es posible "atrapar"msiexec ¿Progreso y por ejemplo actualizar una barra de progreso en mi aplicación? Parece una locura, pero estoy bastante seguro de que algún instalador profesional funciona de esta manera ejecutando un paquete externo msi.
Entonces, ¿es posible? ¿Hay algo que podamos hacer en C # o es una tarea muy difícil que requiere muchos conocimientos que no tengo?

Solo una nota: sé que podría usar"/qb" param, pero algún paquete no se comporta de la manera correcta con él y no quiero usarlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta