Я попробовал это "нормальным" способом и не смог. Установщики нельзя смешивать, запускать одновременно.
Однако я сделал еще одно приложение, запускающее два установщика, один за другим. Сначала мое приложение, затем SQL Server Express. Это сработало. Возможная проблема заключается в том, что в случае сбоя второго установщика откат первой установки не произойдет. Это было то, с чем я мог жить.
Тогда мое установочное приложение выглядит так (псевдокод):
proces1 = Run MyApp.msi
Wait for proces1 to complete
proces2 = Run 3thPartyApp.msi
Wait for proces2 to complete
Вы можете получить коды возврата от процессов, которые вы запускаете из .net, чтобы вы знали, если что-то не получилось.
Наконец, вы можете использовать самораспаковывающийся архив, чтобы упаковать все в один, легко распространяемый exe-файл.