Обычно перезагрузка между установкой и запуском происходит потому, что вы заменяете системные библиотеки DLL, которые заблокированы. Установщик устанавливает запись реестра для однократного запуска, которая копирует библиотеки DLL во время загрузки, прежде чем они будут заблокированы Windows, и тогда ваше приложение сможет использовать новую DLL, которую вы установили.
В целом, это крайне нежелательно. Больше не должно быть причин, чтобы кому-либо, кроме самой Windows, требовалась перезагрузка после установки.
Я бы предложил вернуться в отладчик, чтобы узнать больше подробностей о том, почему ваше приложение дает сбой. Надеюсь, в вашем коде достаточно трассировки, чтобы разрешить этот тип отладки.