MsiExec progress catch

Piszę małą aplikację, aby zainstalować jakiś produkt i odinstalować inne w trybie cichym.
Każdy produkt ma swój plik MSI i nic innego, a manifest aplikacji stwierdza, że ​​powinien być uruchamiany z uprawnieniami administratora.
Jest bardzo łatwy do uruchomieniamsiexec z odpowiednimi argumentami do wykonania mojego zadania (tylko garść kodu) i wszystko działa dobrze.
Tak czy inaczej, pakiet zajmuje dużo czasu, aby zakończyć, a na jakimś starym komputerze PC pyta, czy coś nadal dzieje się w tle lub jest zawieszone.
Czy można więc „złapać”msiexec postęp i na przykład zaktualizować pasek postępu w mojej aplikacji? Brzmi dziwnie, ale jestem pewien, że jakiś profesjonalny instalator działa w ten sposób, uruchamiając zewnętrzny pakiet msi.
Czy to możliwe? Czy jest coś, co możemy zrobić w C #, czy jest to bardzo trudne zadanie, które wymaga dużej wiedzy, której nie mam?

Tylko uwaga: wiem, że mógłbym użyć"/qb" param, ale niektóre pakiety nie zachowują się w odpowiedni sposób i nie chcę go używać.

questionAnswers(2)

yourAnswerToTheQuestion