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


Регистрация VSPackage

VSPackages должны сообщить Visual Studio о том, что они установлены и должны быть загружены. Этот процесс выполняется путем написания сведений в реестре. Это типичное задание установщика.

Примечание.

Это приемлемая практика во время разработки VSPackage для использования самостоятельной регистрации. Однако партнеры программы Visual Studio Industry Partner (VSIP) не могут отправлять свои продукты с помощью самостоятельной регистрации в рамках настройки.

Записи реестра в пакете установщика Windows обычно выполняются в таблице реестра. Вы также можете зарегистрировать расширения файлов в таблице реестра. Однако установщик Windows обеспечивает встроенную поддержку с помощью программного идентификатора (ProgId), классов, расширений и таблиц команд. Дополнительные сведения см. в таблицах баз данных.

Убедитесь, что записи реестра связаны с компонентом, подходящим для выбранной параллельной стратегии. Например, записи реестра для общего файла должны быть связаны с компонентом установщика Windows. Аналогичным образом записи реестра для файла, зависящее от версии, должны быть связаны с компонентом этого файла. В противном случае установка или удаление VSPackage для одной версии Visual Studio может разорвать VSPackage в других версиях. Дополнительные сведения см. в статье "Поддержка нескольких версий Visual Studio".

Примечание.

Самый простой способ управления регистрацией — использовать одни и те же данные в одних и том же файлах для регистрации разработчика и регистрации во время установки. Например, некоторые средства разработки установщика могут использовать файл в формате REG во время сборки. Если разработчики поддерживают REG-файлы для собственной повседневной разработки и отладки, эти же файлы можно включить в установщик автоматически. Если вы не можете автоматически предоставлять общий доступ к данным регистрации, необходимо убедиться, что копия данных регистрации установщика является текущей.

Регистрация неуправляемых VSPackages

Неуправляемые VSPackages (включая созданные шаблоном пакета Visual Studio) используют файлы rgs в стиле ATL для хранения сведений о регистрации. Формат файла rgs относится к ATL и обычно не может использоваться как есть средством разработки установки. Сведения о регистрации установщика VSPackage должны храниться отдельно. Например, разработчики могут хранить файлы в формате REG в синхронизации с изменениями rgs-файла. Reg-файлы можно объединить с RegEdit для работы разработки или использования установщиком.

Регистрация управляемых VSPackages

Средство RegPkg считывает атрибуты регистрации из управляемого ПАКЕТА VSPackage и может записывать сведения непосредственно в реестр или записывать файлы reg-format, которые могут использоваться установщиком.

Примечание.

Средство RegPkg не распространяется и не может использоваться для регистрации VSPackage в системе пользователя.

Почему VSPackages не должны самостоятельно регистрироваться во время установки

Установщики VSPackage не должны полагаться на самостоятельную регистрацию. На первый взгляд, сохранение значений реестра VSPackage только в САМОМ VSPackage кажется хорошей идеей. Учитывая, что разработчикам нужны значения реестра, доступные для их обычной работы и тестирования, рекомендуется избежать сохранения отдельной копии данных реестра в установщике. Установщик может полагаться на сам VSPackage для записи значений реестра.

Хотя хорошо в теории, самостоятельная регистрация имеет несколько недостатков, которые делают его непригодным для установки VSPackage:

  • Для правильной поддержки установки, удаления, отката установки и отката удаления требуется создать четыре пользовательских действия для каждого управляемого VSPackage, который самостоятельно регистрируется путем вызова RegPkg.

  • Для параллельной поддержки может потребоваться создать четыре пользовательских действия, которые вызывают RegSvr32 или RegPkg для каждой поддерживаемой версии Visual Studio.

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

  • Автономные библиотеки DLL иногда ссылаются на вспомогательные библиотеки DLL, которые отсутствуют или являются неправильной версией. Напротив, установщик Windows может зарегистрировать библиотеки DLL с помощью таблиц реестра без зависимости от текущего состояния системы.

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