Особенность установщика WPF заключается в том, что вашим пользователям потребуется соответствующая версия .NET, установленная только для установки вашего приложения. Это может быть хорошо, если вы используете .NET 3.0 и ваше программное обеспечение требует Windows Vista или выше. Но если вы используете .NET 3.5 или 4.0, просто указать .NET как требование может быть недостаточно. Что вы делаете, если пользователь удаляет .NET, а затем пытается удалить ваше приложение?
Вот почему обычно считается плохой идеей использовать пользовательские действия .NET в установщике.
Несмотря на то, что ммр рекомендует WiX (я использовал его, и он очень мощный), следует отметить, что у него крутая кривая обучения. Или, по крайней мере, так оно и было, когда я использовал его в последний раз, потому что его не было или почти не было. Вы в основном все сделали вручную.
Если у вас нет ресурсов разработчика, чтобы тратить много времени на установку, я бы посоветовал взглянуть на коммерческий продукт для разработки, который, вероятно, позволит вам быстро приступить к работе.
Но вы, вероятно, можете сэкономить много времени, переместив серийный номер / элемент активации из установщика и сделав это из своего приложения при первом запуске.