Выполнить процесс как обычный пользователь из MSI (wix) в другом контексте.

StackOverflow https://stackoverflow.com/questions/406133

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь настроить установщик некоторого программного обеспечения, которое мы используем в компании.

Программа установки распространяется на целевые машины через SMS и выполняет следующие шаги:

  1. Завершите все запущенные в данный момент экземпляры приложения (приложение представляет собой служебную программу, поэтому это не повлияет на пользователя).
  2. Удалите предыдущую версию.
  3. Установите обновленную версию.

Мы хотим, чтобы он запускал установленный исполняемый файл (как текущий вошедший в систему пользователь, а не системную учетную запись, от имени которой запускается задание 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, и кажется, что понижение привилегий для запуска фоновой утилиты от имени другого пользователя на самом деле невозможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top