Развертывание с помощью установщика Windows в Windows Vista

Обновлен: Ноябрь 2007

Установщик Windows поддерживает установку программного обеспечения в операционной системе Windows Vista. Конечный пользователь, устанавливающий приложение в Windows Vista, будет получать запрос только если для установки компонентов необходимо повышение прав, даже если активен контроль учетных записей (User Account Control, UAC). Сведения о настройке UAC см. в разделе Windows Vista и Visual Studio.

Повышение прав приложения

Как правило, Setup.exe (также называемый загрузчиком) работает не с повышенными правами, а с правами текущего пользователя. Таким образом установка не запрашивает повышения прав при запуске установки конечного приложения. Однако следует иметь в виду, что файл MSI обычно запрашивает повышение прав у пользователя, тогда как Setup.exe этого не делает.

Во встроенном UAC-манифесте загрузчика узел requestedExecutionLevel указывает на то, что установка выполняется от имени текущего пользователя (asInvoker):

<requestedExecutionLevel level="asInvoker" />

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

Чтобы повысить права программы установки, откройте файл проекта (VDPROJ). В разделе файла проекта MsiBootstrapper присвойте свойству RequiresElevation значение True. Это свойство не доступно в интегрированной среде разработки (IDE) Visual Studio. Таким образом, необходимо использовать файл проекта. Дополнительные сведения см. в разделе Свойство RequiresElevation.

Повышение прав с участием администратора

Установщик Windows поддерживает повышение прав с участием администратора в Windows Vista. В этом случае у пользователя запрашиваются учетные данные администратора, и администратор вводит пароль для пользователя. Для поддержки этого сценария, загрузчик устанавливает свойство AdminUser равным True, если компьютер работает под управлением Windows Vista или более поздней версии Windows.

Bb384154.alert_note(ru-ru,VS.90).gifПримечание.

Если на компьютере используется Windows Vista с отключенным UAC и текущий пользователь не является администратором, свойству AdminUser по-прежнему будет присвоено значение True. Таким образом, EXE-установщики (например SQLExpress32.exe) должны быть написаны с учетом необходимости обнаружения необходимого уровня разрешений и для генерации определенного кода завершения в случае недостаточности разрешений. При разработке в Setup.exe необходимо включить возможность обработки этого кода завершения и вывода соответствующего сообщения о необходимости прав администратора.

Повышение прав необходимых компонентов

При необходимости Windows Vista повышает права программы установки необходимых компонентов. Сам загрузчик не выполняет повышение прав; при запуске в Windows Vista со включенным UAC он выдает запрос для каждого необходимого компонента, чья установка должна выполняться с повышенными правами в том случае, если этот компонент еще не установлен. Если при повышении прав пакета происходит ошибка, загрузчик прекращает работу и отправляет соответствующее сообщение.

Повышение прав для настраиваемого действия

Настраиваемые действия, созданные в редакторе настраиваемых действий, выполняются с повышенными правами. Настраиваемые действия не должны работать с данными, относящимся к конкретному пользователю, например, реестром или файловой системой, так как настраиваемое действие будет работать под учетной записью, отличной от той, под которой была запущена установка.

По умолчанию настраиваемые действия запускаются с повышенными правами, поскольку значением по умолчанию для свойства NoImpersonate в редакторе настраиваемых действий является True. Если изменить значение свойства NoImpersonate на False, то настраиваемое действие будет выполняться с правами (возможно, ограниченными) пользователя, запустившего установку.

Различия между версиями Visual Studio

Кроме того, проекты установки Visual Studio 2005 и Visual Studio 2008 будут выполняться под Windows Vista UAC по-разному.

Механизм обнаружения установщика, встроенный в Windows Vista, запрашивает согласие пользователя, если этот пользователь работает со включенным UAC. Загрузчик (Setup.exe), построенный в Visual Studio 2005, всегда запрашивает согласие пользователя, вне зависимости от того, что он устанавливает. Так как Setup.exe и все его процессы выполняются в Windows Vista с маркером доступа администратора, установка конечного приложения также будет запущена с повышенными привилегиями. Если пользователь запускает программу Setup.exe, используя повышение прав с участием администратора, приложение будет установлено в профиль того пользователя, чьи права были повышены, а не в профиль администратора.

В Visual Studio 2008 Setup.exe ведет себя по-другому; при запуске он не запрашивает повышение прав. Чтобы предотвратить появление запроса на повышение прав, внедренный манифест загрузчика указывает, что файл setup.exe выполняется на уровне выполнения, указанном в asInvoker. Это обеспечивает преимущества установки приложения без повышения прав, сохраняя возможность установки необходимых компонентов с повышенными правами. Загрузчик вызывает ShellExecute для запуска необходимых компонентов. Windows Vista получает этот вызов, выполняет обнаружение установки и выдает пользователю запрос перед установкой.

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

См. также

Основные понятия

Развертывание с помощью установщика Windows в Windows Vista

Windows Vista и Visual Studio

Права пользователя и Visual Studio

Другие ресурсы

Основные понятия развертывания с помощью установщика Windows