Я собираюсь дать прагматичный, хотя и не идеальный ответ .... Установщик Windows на самом деле не имеет никакого способа поддержать это, так что просто намеренно запрашивайте перезагрузку и не используйте элемент ServiceControl.Просто установите ServiceInstall на Auto и позвольте перезагрузке позаботиться обо всем остальном.
Я знаю, я обычно стараюсь также избегать перезагрузок, но если вам часто все равно понадобится такая перезагрузка, это просто упростит всю вашу историю..
Единственное, о чем я действительно могу подумать, это представить механизм RPC в вашем сервисе (например, конечную точку wcf) и сделать так, чтобы ваш длительный процесс выполнялся только при втором запуске сервиса иликогда этот RPC вызывается в первый раз.Затем сделайте пользовательское действие в конце программы установки, если вызов перезагрузки не требуется.
Я просто не могу придумать, как это сделать в MSI.