Регистрация 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. Это может привести к сбою установки компонента во время административной установки.