Выполнить процесс как обычный пользователь из MSI (wix) в другом контексте - PullRequest
3 голосов
/ 02 января 2009

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

Программа установки отправляется на целевые машины с помощью 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 ]

0 голосов
/ 13 января 2009

К сожалению, это может показаться невозможным - я полагаю, что это может быть вариант написать расширение для MSI, которое делает то, что мне нужно, в коде, каким-то образом - хотя это кажется большой работой за небольшое вознаграждение.

Мы решили использовать SMS для отправки связанного пакета - основного, выполняющего наше приложение, которое в первую очередь зависит от запуска установщика.

Надеюсь, это поможет кому-то еще:)

0 голосов
/ 03 января 2009

Решение, которое я придумала, состоит в том, чтобы запустить нашу утилиту, используя ключ реестра Run при входе в систему, и предотвратить запуск утилиты во время установки, если текущий пользователь «SYSTEM» - это было не специально для SMS, а с Развертывание AD / GPO. Однако некоторые наши клиенты используют SMS, и это было решение, которое им помогло.

Подобные проблемы с Vista / Server 2008 UAC, единственное надежное решение, которое я придумала, - это запланировать перезагрузку, чтобы при повторном входе пользователя в утилиту запускалась в правильном пользовательском контексте.

Я провел немало исследований и просмотрел документацию MSI, и кажется, что снижение привилегий для запуска фоновой утилиты от имени другого пользователя на самом деле невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...