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