Il database del programma di installazione di Windows contiene in realtà una serie di funzioni transazionali integrate che possono rendere questo molto carino gestito automaticamente.
Tuttavia, ciò che vorrete fare è eseguire msiexec.exe non come processo secondario e quindi uscire dal vostro processo mentre è in esecuzione. Lascia che l'installatore abbia un ultimo passaggio per "lanciare l'app", quindi al termine riaprirà la nuova applicazione e sarà quindi abbastanza semplice.
Se la tua app viene aggiornata e aperta e si verifica un riavvio, i rollback delle transazioni potrebbero avere un problema minore con i file in uno stato divertente perché erano in uso quando MSI ha tentato di eseguire l'aggiornamento. Se il tuo MSI è ben costruito, mentre viene installato, un riavvio (anche non eseguito) comporterà un rollback completo o una continuazione della transazione che inizia quando il riavvio è completato.
Sospetto che tu non abbia la tua configurazione msi per eseguire correttamente gli aggiornamenti dei file nella modalità posticipata
Per wikipedia (enfasi mia)
[...] Deferred mode. In this phase, the script built in immediate mode is executed in the context of the privileged Windows Installer service. The script must be executed by a privileged account because of the heterogeneity of the scenarios in which a setup operation is initiated. For example, elevated privileges are necessary to serve on-demand installation requests from non-privileged users. (To run with elevated privileges, however, the package must be deployed by a local administrator or advertised by a system administrator using Group Policy.)
Rollback
All installation operations are transactional.[7] In other words, for each operation that Windows Installer performs, it generates an equivalent undo operation that would revert the change made to the system. In case any script action fails during deferred execution, or the operation is cancelled by the user, all the actions performed until that point are rolled back, restoring the system to its original state. Standard Windows Installer actions automatically write information into a rollback script; package authors who create custom actions that change the target system should also create corresponding rollback actions (as well as uninstall actions and uninstallation-rollback actions). As a design feature, if applied correctly this mechanism will also roll back a failed uninstall of an application to a good working state. [...]