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


Удаление исправлений

Начиная с версии 3.0 установщика Windows, можно создавать и устанавливать исправления, которые можно удалять индивидуально и в любом порядке, не удаляя и не переустанавливая всё приложение и другие исправления. Установщик Windows 3.0 также позволяет создавать пакеты исправлений с помощью таблицы msiPatchSequence , содержащей сведения о последовательности исправлений. В более ранних версиях установщика Windows, чем установщик Windows 3.0, единственным способом удаления определенных исправлений из приложения является удаление всего исправленного приложения, а затем переустановка без повторного применения каких-либо исправлений.

Может ли исправление быть удалено, зависит от того, как был создан исправление, версия установщика Windows, используемая для установки исправления, и изменения, внесенные исправлением в приложение. Если исправление недоступно для удаления, то единственным способом удаления исправления является удаление всего приложения и переустановка без применения исправления.

Вы можете удалить одно или несколько исправлений с помощью параметра командной строки, интерфейса сценариев или вызова MsiRemovePatches из другого приложения. Дополнительные сведения о том, как удалить исправления, см. в разделах ,.

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

После того как исправление подтверждено как удаляемое, установщик удаляет его из последовательности применения исправлений. Дополнительные сведения о том, как установщик Windows 3.0 определяет последовательность, которую следует использовать при применении исправлений, см. в разделе последовательности исправлений. Обратите внимание, что удаление исправлений из последовательности может привести к тому, что исправления, помеченные как устаревшие или замененные, становятся активными.

Все исправления, выбранные для удаления, перечислены в свойстве MsiPatchRemovalList. Это приватное свойство, которое назначается установщиком и может использоваться в условных выражениях или быть запрошено с помощью пользовательских действий . Свойство содержит список GUID-ов кодов исправлений, которые нужно удалить. Настраиваемое действие может определить, применяется ли состояние установки исправления, устарело или заменено путем вызова функции MsiGetPatchInfoEx или свойства PatchProperty объекта Patch .

После удаления исправления состояние приложения совпадает с тем, что если исправление никогда не было установлено. По возможности установщик ограничивает процесс подмножеством функций, затронутых удалением исправления. Установщик автоматически задает свойство ПЕРЕУСТАНОВКА списку затронутых функций. Файлы, добавленные исправлением, удаляются, а файлы, измененные исправлением, перезаписываются. Файлы и записи реестра восстанавливаются до версии, ожидаемой продуктом, минус исправление. Функции и компоненты, добавленные исправлением, отменяются в приложении. Обратите внимание, что дополнительное содержимое, добавленное исправлением, может оставаться на компьютере пользователя, если содержимое используется другим исправлением, которое по-прежнему применимо.

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

MsiEnumapplicationsEx

MsiGetPatchInfoEx

MSIPATCHREMOVE

MsiRemovePatches

Последовательность патчей

Удаление настраиваемых действий патча

Удаляемые исправления

удаление патчей