Captura de progresso MsiExec

Estou escrevendo um pequeno aplicativo para instalar algum produto e desinstalar algum outro no modo silencioso.
Cada produto tem seu arquivo MSI e nada mais, e o manifesto do meu aplicativo informa que ele deve ser executado com privilégios de administrador.
É muito fácil de executarmsiexec com argumentos apropriados para realizar minha tarefa (apenas um monte de código) e tudo está funcionando bem.
De qualquer forma, algum pacote leva muito tempo para terminar e em algum antigo usuário do PC está perguntando se algo ainda está acontecendo em segundo plano ou está travado.
Então é possível "pegar"msiexec progresso e por exemplo atualizar uma barra de progresso no meu aplicativo? Parece loucura, mas tenho certeza que algum instalador profissional funciona desta forma executando o pacote msi externo.
Então, é possível? Existe algo que podemos fazer em C # ou é uma tarefa muito difícil que requer muito conhecimento que eu não tenho?

Apenas uma nota: eu sei que eu poderia usar"/qb" param, mas algum pacote não está se comportando da maneira correta e eu não quero usá-lo.

questionAnswers(2)

yourAnswerToTheQuestion