msi ist keine Datei im Portable Executable (PE)-Format, welche eigenständig lauffähige Programme darstellen.
msi-Dateien benötigen einen Interpreter, der die darin enthaltenen Anweisungen ausführt.
Früher war das mal die msiexec.exe aber mittlerweile wird da direkt msimsg.dll ausgeführt.Machen wir es kurz: Nimm statt Run() ShellExecute() .
Diese Funktion sucht in der Registry mit welchem Programm eine Dateiendung verknüpft ist und ruft diese entsprechend auf.
Herzlichen Dank!