Обновление сборок

В этой статье приведены рекомендации по обновлению сборок с помощью исправлений установщика Windows.

Авторы обновлений сборок могут использовать следующие рекомендации, которые применяются ко всем типам сборок:

  • Для обновления сборки рекомендуется изменить строгое имя сборки в таблице MsiAssemblyName. Новая версия сборки может быть предоставлена новым компонентом или тем же компонентом, который предоставляет старую версию.
  • Если новая версия сборки предоставляется тем же компонентом, не изменяйте тип сборки с платформа .NET Framework на сборку Win32 или наоборот.
  • Если все приложения в системе должны использовать обновленную сборку, следует развернуть сборку политики. Сборка политики может перенаправлять приложения в системе для использования новой версии сборки. Сборки политики должны быть предоставлены путем создания нового компонента.
  • Для удаления обновлений сборок требуется установщик Windows 3.0 или более поздней версии. Дополнительные сведения см. в разделе Удаление исправлений.
  • Более новая версия сборки должна содержать те же или более поздние версии файлов из ранее выпущенных сборок.
  • Установщик Windows 3.0 может обслуживать сборки платформа .NET Framework и Win32 путем полной замены файлов или путем небольшого разностного обновления. Дополнительные сведения см. в разделе Уменьшение размера исправлений.
  • Если обновление изменяет строгое имя сборки, требуются таблицы MsiPatchOldAssemblyFile и MsiPatchOldAssemblyName , если пакет исправлений не содержит таблицу MsiPatchSequence . Таблицы MsiPatchOldAssemblyFile и MsiPatchOldAssemblyName не требуются, если пакет исправлений содержит сведения о последовательности исправлений в таблице MsiPatchSequence.
  • Перед выпуском нового исправления протестируйте его, применив его ко всем ранее выпущенным исправлениям.

Обновление сборок Win32

При обновлении сборок Win32 используйте следующие рекомендации:

  • Измените строгое имя новой сборки, указанное в таблице MsiAssemblyName.
  • Если вы хотите, чтобы приложение всегда использовало новую версию сборки, не влияя на версию сборки, используемую другими приложениями в системе, используйте тот же компонент, чтобы содержать новую версию сборки, которая использовалась для старой версии сборки. Сохраните тот же ComponentId в таблице Component . После установки исправлений приложение содержит только ссылку на новую версию сборки. Старая версия сборки может остаться с новой версией в глобальном кэше сборок. Это не влияет на другие приложения в системе, использующие старую версию сборки. Если один и тот же компонент используется для новой и старой версий сборки, обновление может быть небольшим разностным исправлением.
  • Если новая версия сборки несовместима со всеми системами, в которые требуется установить приложение, можно установить новую и старую версии сборки как параллельные сборки. Чтобы установить обе версии сборки параллельно, создайте новый компонент, содержащий новую версию сборки. ComponentId в таблице Компонентов для нового компонента должен отличаться от ComponentId компонента со старой версией. После установки исправлений приложение содержит ссылки на обе версии сборки. Затем приложение может быть перенаправлено в совместимую версию сборки с помощью манифеста. Если для новой и старой версий сборки используются разные компоненты, обновление использует полную замену файлов.

Обновление сборок платформа .NET Framework

При обновлении сборок платформа .NET Framework используйте следующие рекомендации.

  • Измените строгое имя новой сборки, указанное в таблице MsiAssemblyName.

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

  • Если новая версия сборки совместима со всеми системами, в которые требуется установить приложение, можно установить новую и старую версии сборки как параллельные сборки. Чтобы установить обе версии сборки параллельно, измените строгое имя новой сборки, указанной в таблице MsiAssemblyName, и создайте новый компонент, содержащий новую версию сборки. Значение ComponentId в таблице Component для нового компонента должно отличаться от ComponentId компонента со старой версией. После установки исправлений приложение содержит ссылки на обе версии сборки. Затем приложение может быть перенаправлено в совместимую версию сборки с помощью манифеста. Если для новой и старой версий сборки используются разные компоненты, обновление использует полную замену файлов.

  • Обновление на месте перезаписывает копию сборки платформа .NET Framework в глобальном кэше сборок. Этот тип обновления сборки не изменяет строгое имя сборки. Изменяется только значение в поле FileVersion таблицы MsiAssemblyName . Для обновления сборки платформа .NET Framework на месте требуется платформа .NET Framework 1.1 с пакетом обновления 1 (SP1) или более поздней версии.

    Примечание

    Тип обновления на месте перезаписывает копию сборки в глобальном кэше и может нарушить другие приложения, если новая версия сборки не полностью совместима с обратной совместимостью. Для обновления сборки рекомендуется изменить строгое имя сборки в таблице MsiAssemblyName.