Поделиться через


Развертывание установщика Visual Studio

Развертывание установщика Windows позволяет создать установочный пакет, распространяемый конечным пользователям; для установки приложения пользователь запускает файл установки и выполняет шаги мастера. Этого можно достигнуть, добавив в решение проект установки. При построении проекта создается файл установки, распространяемый конечным пользователям; пользователь запускает этот файл установки и выполняет шаги мастера для установки приложения.

Установщик Microsoft Windows — это управляемая данными служба установки и настройки, поставляемая с операционной системой Windows. Установщик Windows поддерживает базу данных со сведениями обо всех установленных приложениях, включая файлы, разделы реестра и компоненты. При деинсталляции приложения перед удалением файла, раздела реестра или компонента осуществляется проверка базы данных на предмет их использования другими приложениями. Благодаря этому при удалении приложения предотвращается возможность нарушения работы другого приложения.

Примечание

Экспресс-выпуски не включают технологию установщика Windows.Сведения о технологии развертывания, используемой в экспресс-выпусках, см. в разделе Развертывание и безопасность технологии ClickOnce.

С помощью средств развертывания Visual Studio с функциями, предоставляемыми установщиком Windows, можно развертывать и поддерживать приложения.

Создание пакета установщика

Для развертывания приложения и необходимых ему компонентов следует использовать пакет установщика. Как правило, приложения имеют зависимости в платформе .NET Framework, в SQL Server Express или даже настраиваемый EXE-файл либо библиотеку DLL. Однако неясно, имеются ли на компьютерах пользователей определенная версия платформы .NET Framework или другие зависимости, на которые полагается приложение. По этой причине копировать приложение на компьютер пользователя не рекомендуется.

Расположение для установки

Пользователи могут установить приложение из Интернета, с компакт-диска, из сетевой общей папки или другими способами. Место, откуда выполняется установка, влияет на используемый шаблон проекта. Например, если требуется, чтобы пользователи выполняли установку из Интернета, можно использовать шаблон проекта веб-установки. Для установки с компакт-диска или по сети используйте шаблон проекта установки. Дополнительные сведения о шаблонах проекта развертывания см. в разделе Проекты установки и развертывания.

Файлы и папки

Для управления тем, куда и как устанавливаются файлы развертывания, можно использовать Редактор файловой системы. Организация файловой системы и имена папок могут быть различными на разных компьютерах. Редактор файловой системы использует принцип абстрактных папок, обеспечивая установку файлов по требуемому пути. Дополнительные сведения см. в разделе Управление установкой файлов при развертывании.

Виртуальные папки представляют системные папки Windows. Например, папка Desktop Folder является эквивалентом системной папки "Рабочий стол". Windows отслеживает расположение системных папок, поэтому независимо от того, где находится папка и как она называется, файлы, помещенные в Папку рабочего стола, всегда оказываются в системной папке рабочего стола. Дополнительные сведения см. в разделе Особые и пользовательские папки.

Также имеется возможность создания собственных папок и размещения их в любой системной папке. Например, в папке Application Folder может быть создана папка Application Data — независимо от того, где расположена Application Folder на конечном компьютере, файлы, помещаемые в папку Application Data, всегда будут установлены в одно и то же относительное местоположение. Дополнительные сведения см. в разделе Практическое руководство. Добавление и удаление папок в редакторе файловой системы.

Папки Редактора файловой системы могут содержать файлы, выходные элементы проекта и сборки. Выходные элементы проекта представляют элементы, содержащиеся в другом проекте внутри решения, и могут включать первичный результат построения (например, исполняемый файл), локализованные ресурсы, символическую отладочную информацию, файлы содержания (например, HTML–страницы) и исходные файлы проекта. Каждый из этих выходных элементов называется выходной группой проекта. Выходная группа проекта содержит первичные выходные элементы (известные как ключевые выходные элементы), а также дополнительные выходные элементы и зависимости. Дополнительные сведения см. в разделах Практическое руководство. Добавление и удаление результатов проекта в редакторе файловой системы и Практическое руководство. Добавление элементов в проекте развертывания.

Кроме того, с помощью свойства Condition на любой файл или папку могут быть наложены условия. Это позволяет настраивать установку файлов в зависимости от условий, существующих на конечном компьютере во время установки. Например, в зависимости от версии операционной системы могут быть установлены разные файлы. Дополнительные сведения см. в разделе Свойство Condition.

Редактор файловой системы поддерживает также создание ярлыков, позволяя размещать файлы в одной папке, а указатели на них — в ярлыках на рабочем столе или в другой папке. Дополнительные сведения см. в разделе Практическое руководство. Добавление и удаление ярлыков в редакторе файловой системы.

Сопоставление файлов

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

Инструменты развертывания Visual Studio включают Редактор типов файлов, который позволяет указывать типы документов и сопоставлять их с расширениями файлов. Кроме того, для каждого типа документа можно задать команды или действия и определить используемые в обозревателях типы MIME для типов документов. Дополнительные сведения см. в разделе Управление типами файлов при развертывании.

Во время установки параметры, указанные в Редакторе типов файлов, обновляются на целевом компьютере.

Реестр

Часто при развертывании приложения требуется доступ к реестру, установка значений реестра или создание его разделов. Инструменты развертывания Visual Studio обеспечивают такие возможности.

Редактор реестра Visual Studio подобен редактору реестра Windows: оба инструмента обеспечивают иерархическое представление реестра на целевом компьютере. Представляются стандартные корни реестра. Можно изменять значения для существующих разделов, добавлять значения для новых разделов и задавать разделы по умолчанию. Дополнительные сведения см. в разделе Управление параметрами реестра при развертывании.

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

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

Подписывание с помощью Authenticode

Чтобы пользователи могли проверить автора публикации и безопасность приложения или компонента, данное приложение или компонент требуется подписать. Рекомендуется подписывать CAB-файлы и установщики, загружаемые с помощью веб-браузера.

Инструменты развертывания Visual Studio предоставляют возможность подписать установщик, модуль слияния или CAB-файл с помощью технологии Microsoft Authenticode. Чтобы подписать приложение или компоненты, необходимо приобрести цифровой сертификат.

Для использования технологии подписания Authenticode необходимо включить подписанные манифесты ClickOnce в проекте развертывания. Дополнительные сведения см. в разделе Страница "Подписывание" в конструкторе проектов.

Глобальный кэш сборок

Глобальный кэш сборок — это кэш кода, предоставляемый платформой .NET Framework и используемый для хранения сборок, которые должны совместно использоваться несколькими приложениями. Чтобы сборку можно было установить в глобальный кэш сборок, она должна иметь строгое имя. При этом приложение или компонент получают уникальное обозначение, которое другие программы могут использовать для его идентификации и явного обращения к нему. Дополнительные сведения см. в разделе Практическое руководство. Подписывание сборки (Visual Studio).

Чтобы установить сборку в глобальный кэш сборок, добавьте ее в группу выходных данных проекта для сборки в папку Глобального кэша сборок в Редакторе файловой системы. Чтобы открыть это редактор, в меню Вид укажите пункт Редактор и выберите Файл Система Редактор.

Папка Глобального кэша сборок не похожа на остальные папки вРредакторе файловой системы. Задать свойства для нее невозможно; для этой папки и находящихся в ней сборок нельзя также создавать ярлыки.

Выбор необходимых компонентов

Для успешного развертывания приложения необходимо также развернуть все компоненты, на которые ссылается приложение. Например, большинство приложений, созданных с помощью Visual Studio, зависят от платформы .NET Framework. Перед установкой приложения на конечном компьютере должна присутствовать требуемая версия среды CLR. Средства развертывания в Visual Studio позволяют установить платформу .NET Framework и другие компоненты в процессе установки. Процесс установки необходимых компонентов также называется начальная загрузка.

Дополнительные сведения см. в разделе Практическое руководство. Установка необходимых компонентов при развертывании с помощью установщика Windows.

Установка с правами администратора

Административный пакет установки — это элемент установщика Microsoft Windows, который позволяет устанавливать исходный образ приложения на сетевой общий ресурс. Пользователи рабочей группы, которые имеют доступ к этому сетевому ресурсу, смогут затем установить приложение из исходного образа.

Редактор интерфейса пользователя позволяет задать другой набор диалоговых окон установки, которые отображаются, когда администратор устанавливает приложение в сетевую папку с помощью командной строки, используя параметр /a (msiexec /aимя_установщика). Дополнительные сведения см. в разделе Управление пользовательским интерфейсом при развертывании.

Примечание

При установке приложения с помощью административного пакета установки файлы начальной загрузки приложения (т.е. те файлы, которые при необходимости устанавливают установщик Windows), не копируются на сервер, даже если для свойства Начальный загрузчик задано значение Начальный загрузчик установщика Windows.Если для установки требуются файлы начальной загрузки приложения, необходимо вручную скопировать на сервер файлы Instmsia.msi, Instmsiw.msi, Setup.exe и Setup.ini.Эти файлы можно найти в том же каталоге, в котором находится файл приложения с расширением .msi.

Дополнительные сведения см. в документации пакета SDK установщика Windows в разделе Административная установка (установщик Windows).

Windows и повышение прав

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

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

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

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

<requestedExecutionLevel level="asInvoker" />

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

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

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

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

Примечание

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

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

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

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

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

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

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

Обратите внимание, что при включенной функции контроля учетных записей проекты установки Visual Studio 2005 и Visual Studio 2008 выполняются по-разному.

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

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

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

См. также

Задачи

Устранение проблем, связанных с проектами установки и развертывания

Ссылки

Ошибки развертывания и поддержка развертывания

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

Проекты установки и развертывания

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

Развертывание приложений и компонентов

Редакторы развертывания

Задачи и пошаговые руководства по развертыванию

Диалоговые окна развертывания

Примеры и пошаговые руководства по развертыванию