Последовательные исправления
Начиная с установщика Windows 3.0 авторы могут добавлять сведения о последовательности исправлений в базу данных пакетов исправлений в таблице MsiPatchSequence . Установщик может использовать эти сведения, чтобы определить, какие исправления применимы к пакету установки, определить оптимальную последовательность исправлений и установить исправления в постоянном порядке, независимо от порядка, который они предоставляются системе.
Установщик Windows 2.0: Не поддерживается. Версии установщика Windows, предшествующие установщику Windows 3.0, устанавливают исправления в том порядке, в котором они предоставляются системе независимо от того, содержат ли они таблицу MsiPatchSequence .
Для использования функции виртуализации исправлений необходимо следующее.
- Пакеты исправлений (MSP-файлы) должны содержать таблицу MsiPatchSequence , содержащую сведения о последовательности. Установщик устанавливает исправления без таблицы MsiPatchSequence в том порядке, в который они предоставляются системе.
- Исправления устанавливаются с помощью установщика Windows 3.0 или более поздней версии.
Установщик Windows версии 3.0 содержит следующие функции, которые приложения могут использовать для определения оптимальной последовательности исправлений.
- Функция MsiDeterminePatchSequence принимает список исправлений и определяет, в какой последовательности их можно применить к установленному продукту. Эта функция учитывает все исправления или продукты, которые уже были установлены в системе.
- Функция MsiDetermineApplicablePatches принимает список исправлений и определяет, в какой последовательности их можно применить к установленному продукту. Эта функция не учитывает исправления или продукты, которые уже установлены в системе.
Установщик Windows версии 3.0 может применять несколько исправлений к продукту в рамках одной установки исправлений. Группа исправлений может содержать исправления, содержащие сведения о последовательности исправлений (таблица MsiPatchSequence ), и исправления, которые этого не делают. Установщик Windows устанавливает пакеты исправлений без этой таблицы в порядке их предоставления системе. Установщик учитывает пакеты исправлений, в которых отсутствует таблица MsiPatchSequence, но которые были помечены как устаревшие или замененные исправления методом, описанным в следующем разделе.
Когда установщик Windows версии 3.0 устанавливает несколько исправлений, он выполняет следующие действия, чтобы определить последовательность применения отдельных исправлений к продукту:
Установленные исправления без таблицы MsiPatchSequence помещаются в последовательность в том порядке, в котором они были применены к продукту. Первое примененное исправление помещается первым в последовательности.
Новые исправления без таблицы MsiPatchSequence помещаются в последовательность. Эти исправления применяются текущей установкой исправлений. Они помещаются в том порядке, в который они предоставляются системе, и размещаются после всех исправлений на шаге 1.
Устаревшие исправления исключаются из последовательности исправлений.
Примечание
Пакет исправлений может указать в свойстве Сводка по номеру редакции явный список устаревших исправлений, которые будут удалены исправлением. Этот список предназначен для использования установщиком Windows версий, предшествующих версии 3.0. Установщик Windows версии 3.0 удаляет исправления, помеченные как устаревшие, из последовательности, только если исправления не содержат таблицу MsiPatchSequence.
Установщик выполняет последовательность исправлений и определяет, какие исправления применимы в данной последовательности. Если к продукту применяется несколько исправлений, каждое исправление в последовательности также преобразует базу данных установки продукта (.msi файл). Исправление применяется в определенной последовательности, только если его преобразование базы данных может принимать код продукта, версию, язык и код обновления , которые являются результатом применения преобразований всех предыдущих пакетов исправлений к базе данных продукта. Установщик исключает все неприменимые исправления из последовательности.
Установщик начинает размещение исправлений, которые содержат сведения о последовательности в таблице MsiPatchSequence . Незначительные исправления обновления с таблицей MsiPatchSequence помещаются в последовательность после исправлений, которые были упорядочены на предыдущих шагах, и в порядке их наименьших и максимальных версий продукта после обновления. Затем установщик Windows устраняет все незначительные исправления обновления, которые не применяются в этой последовательности.
Исправления небольших обновлений , предназначенные для незначительных обновлений с таблицей MsiPatchSequence , назначаются самой высокой версии дополнительного исправления обновления в последовательности.
Все исправления небольших обновлений , которые остаются неназначимыми после предыдущих шагов и имеют таблицу MsiPatchSequence , помещаются в последовательность перед первым незначительным обновлением с таблицей MsiPatchSequence, а также после .msi базы данных установки и всех исправлений без таблицы MsiPatchSequence. Затем установщик Windows устраняет исправления небольших обновлений, которые не применяются в этой последовательности.
Установщик Windows версии 3.0 исключает заменяемые исправления из последовательности. Если исправление заменяет исправления, возникающие ранее в последовательности исправлений, это исправление содержит все исправления в предыдущих исправлениях. Более ранние исправления больше не требуются. Установщику Windows требуются сведения в таблице MsiPatchSequence , чтобы исключить заменяемые исправления.
Примечание
Исправления, предназначенные для замены более ранних наборов исправлений, должны быть установлены для замены более ранних исправлений во всех семействах исправлений. Исправления небольших обновлений могут заменять только небольшие обновления. Незначительные обновления могут заменять как небольшие обновления, так и другие незначительные обновления.
Небольшие исправления обновления , которые содержат таблицы MsiPatchSequence , упорядочены в версиях продукта в соответствии с сведениями о последовательности в таблицах MsiPatchSequence. Это определяет окончательную последовательность исправлений.
Исправление, которое больше не следует использовать, можно исключить из последовательности исправлений. Дополнительные сведения об устранении исправлений из последовательности исправлений см. в разделе Устранение исправлений.
Пример использования таблицы MsiPatchSequence для применения исправлений в порядке их создания см. в разделе Пример нескольких исправлений.