У меня была такая же проблема (обернуть EXE, вызвать другой MSI из EXE, включая установку .net и т. Д.),
и вот мое решение:
Я создаю установочный exe-файл, используя InstallAware.
У него есть собственный MSI Wrapper, который оборачивает сгенерированный EXE-файл в MSI.
Работает нормально, EXE может без проблем вызывать другие MSI (включая установку .net, другие настройки сторонних производителей), но это потому, что запуск MSI прекращает («возвращает») права после запуска установочного EXE-файла, и таким образом они избегают ограничения MSI на рекурсивные вызовы MSI.
НО - некоторые клиенты (компании), которые используют средства развертывания MSI, требуют, чтобы MSI (msiexec) возвращал (заканчивал) только после завершения процесса установки, и это является проблемой с вышеупомянутым решением.
Итак - чтобы решить это:
Существует еще один MSI Wrapper (exemsi.com), который генерирует MSI, который возвращается только после завершения установки EXE, но для его использования необходимо использовать другой уникальный параметр InstallAware:
InstallAware имеет возможность создавать установки EXE с использованием собственного встроенного механизма, а не на основе механизма установщика Windows, чтобы избежать рекурсивного ограничения MSI.
Объедините их обоих, и вы получите идеальное решение.
Надеюсь, это кому-нибудь поможет, хотя прошло много лет с тех пор, как этот вопрос был впервые опубликован.