Откат настраиваемых действий
Когда установщик обрабатывает скрипт установки, он одновременно создает скрипт отката. В дополнение к скрипту отката установщик сохраняет копии всех файлов, удаляемых во время установки. Эти файлы хранятся в скрытом системном каталоге. После завершения установки скрипт отката и сохраненные файлы удаляются. Если установка завершается неудачно, установщик пытается откатить изменения, внесенные во время установки, и восстановить исходное состояние компьютера.
Хотя пользовательские действия, которые планируют системные операции путем вставки строк в таблицу базы данных, отменяются путем отката установки, пользовательские действия, которые изменяют систему напрямую или которые выдают команды другим системным службам, не всегда могут быть отменены путем отката. Настраиваемое действие отката — это действие, которое установщик выполняет только во время отката установки, и его цель — отменить настраиваемое действие, вносящее изменения в систему.
Настраиваемое действие отката — это тип отложенного выполнения настраиваемого действия, так как его выполнение откладывается при вызове во время последовательности установки. Оно отличается от обычного отложенного настраиваемого действия тем, что оно выполняется только во время отката. Настраиваемое действие отката всегда должно предшествовать отложенному настраиваемого действия, отката в последовательности действий. Настраиваемое действие отката также должно обрабатывать случай, когда отложенное настраиваемое действие прерывается в середине выполнения. Например, если пользователь нажимал кнопку Отмена во время выполнения настраиваемого действия.
Обратите внимание, что настраиваемые действия отката не могут выполняться асинхронно. См. раздел Синхронные и асинхронные настраиваемые действия.
Дополнением к настраиваемой операции отката является настраиваемое действие фиксации. Установщик выполняет настраиваемое действие фиксации во время последовательности установки, копирует настраиваемое действие в скрипт отката, но не выполняет действие во время отката.
Обратите внимание, что настраиваемое действие отката может не удалить все изменения, внесенные фиксацией пользовательских действий. Хотя установщик записывает и откат, и фиксацию пользовательских действий в скрипт отката, фиксация настраиваемых действий выполняется только после успешной обработки установщиком скрипта установки. Фиксация пользовательских действий — это первые действия, выполняемые в скрипте отката. Если пользовательское действие фиксации завершается сбоем, установщик инициирует откат, но может выполнять откат только тех операций, которые уже записаны в скрипт отката. Это означает, что в зависимости от настраиваемого действия фиксации откат может не отменить изменения, внесенные действием. Ошибки в фиксации настраиваемых действий можно игнорировать, создавая настраиваемое действие для пропуска кодов возврата.
Когда установщик запускает настраиваемое действие отката, единственным параметром режима является MSIRUNMODE_ROLLBACK. Описание параметров режима выполнения см. в разделе MsiGetMode .
Настраиваемое действие отката можно указать, добавив флаг параметра в поле Тип таблицы CustomAction. Флаг параметра, обозначающий настраиваемое действие отката, см. в разделе Параметры выполнения пользовательского действия In-Script.
Откат и фиксация пользовательских действий не выполняются, если откат отключен. Если автору пакета требуются эти типы пользовательских действий для правильной установки, он должен использовать свойство RollbackDisabled в условии, которое не позволяет продолжить установку при отключении отката. Сведения об отключении отката см. в разделе Установка отката (установщик Windows).