msiexec всегда выполняется на машине в единственном экземпляре. Т.е. если есть UI от моего сетапа, то невозможно запустить вторую копию msiexec.exe.
В результате вы обрекаете разработчиков на две кривые реализации:
1. Вызов вашего msi в InstallExecuteSequence после InstallFinalize. Что не позволит проверить правильность установки драйверов и в случае ошибки откатить свой сетап. Кроме того, если в сетапе есть галка "запустить программу после установки", то она не будет корректно работать, т.к. при запуске инсталлированной программы всё ещё не будут установлены драйвера.
2. Вызов вашего msi в InstallUISequence после ExecuteAction. В этом случае не получится установить драйвера совсем, при запуске моего сетапа в "тихом" режиме, т.е. без пользовательского интерфейса. Так же, не будут удалены драйвера при запуске удаления программы из оснастки "Добавление/удаление программ", т.к. удаление там будет вызвано в "тихую".
Мне не кажутся оба эти варианта приемлемыми.
С установкой драйверов для конечного пользователя понятно. Но не будешь каждому пользователю говорить "идите на сайт гуарданта, скачайте их драйвер и установите.". Должна быть простая интеграция драйверов в сетап разработчика.
Мне не кажется, что есть какая то разница во что запакованы ваши драйвера в MSI или в MSM, что суть одно и то же. Я просил бы вас ещё раз серьёзно задуматься над вопросом интеграции ваших драйверов в пакет инсталлятора разработчика.