После загрузки файла msi вы просто запускаете его, используя класс Process, указанный в пространстве имен System.Diagnostics.
После этого Windows позаботится.
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: Пример кода:
Process.Start(@"C:\install.msi", string.Empty);
Конечно, путь к загруженному MSI-файлу должен указывать на временный каталог (хорошим выбором будет сама временная папка Windows), но идея заключается в том, чтобы вызвать статический метод Start() класса Process.