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


Сценарии установки VSPackage

Важно разработать установщик VSPackage для гибкости. Например, в будущем может потребоваться освободить исправление для системы безопасности или изменить бизнес-стратегию, требующую тщательной поддержки параллельного управления версиями.

В поддержке нескольких версий Visual Studio вы можете ознакомиться с преимуществами и проблемами параллельной установки Visual Studio с общими или параллельными установками VSPackage. Короче говоря, параллельные VSPackages обеспечивают большую гибкость для поддержки новых функций Visual Studio.

Сценарии, рассмотренные в этом разделе, являются не единственным вариантом, но они представлены в качестве рекомендуемых рекомендаций.

Компоненты, конфиденциальность и общий доступ

Независимое от компонентов

После идентификации и заполнения компонента назначьте GUIDкомпонент и развернете его, вы не сможете изменить его состав. Если вы изменяете состав компонента, результирующий компонент должен быть новым компонентом с новым GUID. Учитывая эти факты, наибольшая гибкость управления версиями предоставляется путем создания каждого компонента независимой от себя единицы. Дополнительные сведения о правилах, управляющих компонентами, см. в разделе "Изменение кода компонента" и "Что происходит, если правила компонентов неисправны?".

Не смешивать общие и частные ресурсы в компоненте

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

Например, значения реестра, используемые для регистрации VSPackage в пакете SDK Для Visual Studio, должны храниться в компоненте отдельно от одного, используемого для регистрации VSPackage в Visual Studio. Общие файлы или значения реестра идут в еще одном компоненте.

Сценарий 1. Общий VSPackage

В этом сценарии общий VSPackage (один двоичный файл, поддерживающий несколько версий Visual Studio, поставляется в пакет установщика Windows. Регистрация с каждой версией Visual Studio управляется пользовательскими функциями. Это также означает, что при назначении отдельных компонентов каждый компонент можно выбрать отдельно для установки или удаления, что позволяет пользователю контролировать интеграцию VSPackage с разными версиями Visual Studio. (См. раздел Дополнительные сведения об использовании компонентов установщика Windows в пакетах установщика Windows.)

VS Shared VSPackage installer

Как показано на рисунке, общие компоненты являются частью компонента Feat_Common, который всегда устанавливается. Делая Feat_VS2002 и Feat_VS2003 видимыми функциями, пользователи могут выбирать во время установки, в какие версии Visual Studio они хотят интегрировать VSPackage. Пользователи также могут использовать режим обслуживания установщика Windows для добавления или удаления функций, которые в данном случае добавляют или удаляют сведения о регистрации VSPackage из разных версий Visual Studio.

Примечание.

Если для столбца отображения компонента задано значение 0, он скрывается. Значение столбца низкого уровня, например 1, гарантирует, что он всегда будет установлен. Дополнительные сведения см. в статье INSTALLLEVEL Property and Feature Table.

Сценарий 2. Общий пакет обновления VSPackage

В этом сценарии поставляется обновленная версия установщика VSPackage в сценарии 1. В целях обсуждения обновление добавляет поддержку Visual Studio, но это также может быть более простой пакет обновления для системы безопасности или исправления ошибок. Правила установщика Windows для установки новых компонентов требуют, чтобы без изменений компоненты, уже имеющиеся в системе, не были повторно скопированы. В этом случае система с версией 1.0 уже присутствует, перезаписывает обновленный компонент Comp_MyVSPackage.dll и позволяет пользователям добавлять новую функцию Feat_VS2005 с его компонентом Comp_VS2005_Reg.

Внимание

Каждый раз, когда VSPackage используется для нескольких версий Visual Studio, важно, чтобы последующие выпуски VSPackage поддерживали обратную совместимость с предыдущими версиями Visual Studio. Если вы не можете поддерживать обратную совместимость, необходимо использовать параллельные частные VSPackages. Дополнительные сведения см. в статье "Поддержка нескольких версий Visual Studio".

VS Shared VS Package Update installer

Этот сценарий представляет новый установщик VSPackage, используя поддержку установщика Windows для дополнительных обновлений. Пользователи просто устанавливают версию 1.1, и она обновляет версию 1.0. Однако в системе не требуется версия 1.0. Тот же установщик установит версию 1.1 в системе без версии 1.0. Преимущество предоставления дополнительных обновлений таким образом заключается в том, что не требуется пройти работу по разработке установщика обновления и полного установщика продукта. Один установщик выполняет оба задания. Исправление безопасности или пакет обновления может вместо использования исправлений установщика Windows. Дополнительные сведения см. в разделе "Исправление и обновление".

Сценарий 3. Параллельный VSPackage

Этот сценарий представляет два установщика VSPackage — по одному для каждой версии Visual Studio .NET 2003 и Visual Studio. Каждый установщик устанавливает параллельный или частный VSPackage (который специально создан и установлен для определенной версии Visual Studio). Каждый VSPackage находится в своем собственном компоненте. Следовательно, каждый из них может обслуживаться по отдельности с исправлениями или выпусками обслуживания. Так как библиотека DLL VSPackage теперь зависит от версии, она безопасно включить ее сведения о регистрации в том же компоненте, что и библиотека DLL.

VS Side-by-Side VS Package installer

Каждый установщик также включает код, общий доступ между двумя установщиками. Если общий код установлен в общее расположение, установка обоих MSI-файлов установит общий код только один раз. Второй установщик просто увеличивает количество ссылок на компонент. Счетчик ссылок гарантирует, что при удалении одного из VSPackage общий код останется для другого VSPackage. Если второй VSPackage также удален, общий код будет удален.

Сценарий 4. Параллельное обновление VSPackage

В этом сценарии пакет VSPackage для Visual Studio пострадал от уязвимости безопасности, и вам нужно выполнить обновление. Как и в сценарии 2, можно создать новый MSI-файл, который обновляет существующую установку, чтобы включить исправление безопасности, а также развернуть новые установки с исправлением безопасности уже на месте.

В этом случае VSPackage является управляемым VSPackage, установленным в глобальном кэше сборок (GAC). При перестроении, чтобы включить исправление безопасности, необходимо изменить номер редакции номера версии сборки. Сведения о регистрации для нового номера версии сборки перезаписывают предыдущую версию, что приводит к загрузке фиксированной сборки Visual Studio.

VS Side-by-Side VS Package Update installer

Дополнительные сведения о развертывании параллельных сборок см. в статье "Упрощение развертывания и решения БИБЛИОТЕКи DLL Ад" с помощью платформа .NET Framework.