Выполнить процесс как обычный пользователь из MSI (wix) в другом контексте.
-
03-07-2019 - |
Вопрос
Я пытаюсь настроить установщик некоторого программного обеспечения, которое мы используем в компании.
Программа установки распространяется на целевые машины через SMS и выполняет следующие шаги:
- Завершите все запущенные в данный момент экземпляры приложения (приложение представляет собой служебную программу, поэтому это не повлияет на пользователя).
- Удалите предыдущую версию.
- Установите обновленную версию.
Мы хотим, чтобы он запускал установленный исполняемый файл (как текущий вошедший в систему пользователь, а не системную учетную запись, от имени которой запускается задание SMS) после завершения шага 3.
Я попытался добавить пользовательское действие следующим образом:
<CustomAction Id="Relaunch" Impersonate="yes" Return="asyncNoWait" FileKey="AppExeFile" Execute="commit" ExeCommand="acm" />
И в InstallExecuteSequence
элемент у меня есть следующее:
<Custom Action="Relaunch" OnExit="success" />
Однако когда мы пытаемся это сделать, либо в качестве задания SMS, либо при выполнении от имени администратора, ничего не происходит (например.приложение не перезапускается).
Какие-либо предложения?
Решение 2
К сожалению, это кажется невозможным - я полагаю, что можно было бы написать расширение для MSI, которое каким-то образом делает то, что мне нужно, в коде - хотя это кажется большой работой за небольшое вознаграждение.
Мы решили использовать SMS для отправки связанного пакета — основного, который запускает наше приложение, что в первую очередь зависит от запускаемого установщика.
Надеюсь, это поможет кому-то еще :)
Другие советы
Решение, которое я придумал, состоит в том, чтобы запустить нашу утилиту, используя ключ реестра «Выполнить» при входе в систему, и предотвратить запуск утилиты во время установки, если текущий пользователь — «СИСТЕМА» — это было сделано не специально с помощью SMS, а с использованием AD/GPO. развертывание.Однако некоторые из наших клиентов используют SMS, и это решение им помогло.
Аналогичные проблемы с UAC Vista/Server 2008, единственное надежное решение, которое я нашел, - это запланировать перезагрузку, чтобы при повторном входе пользователя в систему утилита запускалась в правильном пользовательском контексте.
Я провел немало исследований и просмотрел документацию MSI, и кажется, что понижение привилегий для запуска фоновой утилиты от имени другого пользователя на самом деле невозможно.