Синхронные и асинхронные пользовательские действия
Установщик Windows обрабатывает пользовательские действия как отдельный поток от основной установки. Во время синхронного выполнения пользовательского действия установщик ожидает завершения потока пользовательского действия, прежде чем продолжить основную установку. Во время асинхронного выполнения установщик выполняет настраиваемое действие одновременно, так как текущая установка продолжается. Поэтому авторы пользовательских действий должны учитывать любые асинхронные потоки, которые могут вносить изменения в базу данных установки между вызовами функций.
В частности, следует избегать вызовов MsiGetTargetPath и MsiSetTargetPath в асинхронных настраиваемых действиях. Вместо этого используйте MsiGetProperty для получения целевого пути. Операции массовой базы данных, такие как импорт, экспорт и преобразование, следует избегать в любом типе пользовательского действия.
Флаги параметров можно задать в поле "Тип" таблицы CustomAction , чтобы указать, что основные и настраиваемые потоки действий выполняются синхронно или асинхронно. См. параметры пользовательской обработки возврата.
Установщик может выполнять только пользовательских действий отката и одновременных действий установки как синхронные пользовательские действия.