В прошлом я делал трюк, когда вы строили MSI с внешними CAB-файлами (по 1 на функцию), а затем использовали настраиваемое действие для проверки существования CAB-файлов. Если они не существуют, вы скрываете эту функцию. Таким образом, вы можете просто создать установщик один раз, а затем отправить его клиентам с различными наборами функций.
Кстати, InstallAware поддерживает эту историю изначально, я верю.