Вот что я недавно сделал для клиента:
Пользовательский интерфейс работает как зарегистрированный пользователь.
Служба работает как Система. Сервис проверяет контент и загружает его во временный каталог. Затем он объявляет MSI с помощью команды / JM. Теперь установщик может быть установлен непривилегированным пользователем.
Служба отправляет приложению сообщение IPC о том, что пора устанавливать. Приложение запускает установщик, передавая ему флаг, указывающий на перезапуск приложения. Приложение прекращает выпуск заблокированных файлов.
В конце установщика флаг заставляет установщик перезапустить приложение.
Также взгляните на библиотеку wuw4. Это помогает в создании многих из этого решения.
Это сложный шаблон, но он работает очень хорошо. У меня есть компания, которая может помочь вам сделать это решение. :)