Почему MSI CustomAction, устанавливающий ключ reg, нужно отложить на Vista с UAC? - PullRequest
5 голосов
/ 30 октября 2008

У нас есть CustomAction, который устанавливает ключ реестра HKEY LOCAL_MACHINE. Это не работало на Vista с UAC, пока мы не сделали действие «отложенным». Установщик работал в других случаях. Кто-нибудь знает почему?

Мы используем WIX для создания установщика.

Ответы [ 2 ]

11 голосов
/ 23 ноября 2008

+ 1 копье. Чтобы сформулировать это по-другому и дать больше информации

В процессе MSI есть 2 шага

  • Немедленно - где вы собираете настройки (установите каталог и т. Д.) - здесь не нужно вносить никаких изменений в машину

, а потом

  • Отложено - запускается после сбора всех настроек и фактически выполняет установку.

Некоторые дальнейшие мысли

  • Немедленно не всегда запускается (например, установка по сценарию), поэтому не полагайтесь на него.

Существует 2 режима, в которых действие deferred может выполняться в

  • NoImpersonate - иначе NT Authority \ Система, которая имеет полное разрешение на вашем компьютере

  • Олицетворение - кто бы ни запустил установку.

С включенным UAC Олицетворение имеет кикер. У вас будет только стандартный токен пользователя и никакие права администратора , даже если пользователь фактически является администратором - поэтому придерживайтесь, если возможно, NoImpersonate , иначе пользовательское действие не сможет выполнить что-нибудь.

4 голосов
/ 30 октября 2008

Ваше пользовательское действие запускалось сразу же, когда оно встречалось в InstallExecuteSequence; вместо того, когда выполнялся фактический скрипт установки. Это привело к тому, что ваше пользовательское действие было выполнено с разрешениями пользователей, а не с повышенными разрешениями системы. В этой серии сообщений блога будет подробно объяснено, что происходит, http://blogs.msdn.com/rflaming/archive/2006/09/23/768146.aspx. У вас не должно быть пользовательских действий, влияющих на состояние компьютера, которые не запускаются как отложенные пользовательские действия.

...