Действие InstallValidate
Действие InstallValidate проверяет, что все тома, к которым были отнесены затраты, имеют достаточно места для установки. Действие InstallValidate завершает установку с неустранимой ошибкой, если на каком-либо томе не хватает места на диске.
Действие InstallValidate также уведомляет пользователя, если один или несколько файлов для перезаписи или удаления в настоящее время используются активным процессом. Дополнительные сведения см. в разделе Перезагрузки системы.
Ограничения последовательности
Действие CostFinalize и все диалоговые окна пользовательского интерфейса, позволяющие пользователю изменять состояния выбора и (или) каталоги, должны быть упорядочены перед действием InstallValidate.
Пользовательские действия , изменяющие состояние установки компонентов или компонентов, должны быть упорядочены перед действием InstallValidate.
Сообщения ActionData
Сообщения ActionData отсутствуют.
Комментарии
Как правило, более ранняя последовательность диалоговых окон пользовательского интерфейса должна выполнять ту же проверку, что и действие InstallValidate, когда пользователь пытается инициировать копирование файлов. В этой последовательности диалоговых окон пользовательского интерфейса должно появиться диалоговое окно "Недостаточно места на диске ", если для выбранных томов недостаточно места для установки. Диалоговые окна пользовательского интерфейса должны создаваться таким образом, чтобы запретить пользователю продолжить установку, если недостаточно места на диске. В случае автоматической установки отсутствует пользовательский интерфейс, а действие InstallValidate завершает установку, если недостаточно места на диске. Причина преждевременного завершения регистрируется в файле журнала, если ведение журнала включено.
Запись добавляется во внутреннюю таблицу FilesInUse, если какой-либо файл перезаписывается или удаляется, когда он открыт для выполнения или изменения любым процессом во время его стоимости. Таблица FilesInUse содержит столбцы для имени и полного пути к файлу. При выполнении действия InstallValidate установщик запрашивает записи в таблице FilesInUse и определяет имя процесса с помощью файла. Действие InstallValidate добавляет одну запись в таблицу пользовательского интерфейса ListBox для каждого уникального процесса, определенного этим запросом. Запись содержит следующие значения в каждом столбце:
Свойство: FileInUseProcess
Значение: имя процесса.
Текст: текст, содержащийся в подпись окна main процесса.
Затем действие InstallValidate отображает диалоговое окно Используемые файлы . В этом диалоговом окне отображаются процессы, которые необходимо завершить, чтобы избежать необходимости перезапуска системы для замены используемых файлов.
Действие InstallValidate запрашивает в таблице Dialog наличие диалогового окна с зарезервированным именем FilesInUse и отображает его. Это диалоговое окно должно содержать элемент управления ListBox , привязанный к свойству FileInUseProcess. По соглашению в этом диалоговом окне есть кнопка Выход, Повторить или Пропустить , но это относится к автору пользовательского интерфейса. Каждая кнопка должна быть привязана к endDialog ControlEvent в таблице ControlEvent . Действие InstallValidate отвечает следующим образом на значение, возвращаемое DoAction ControlEvent, в соответствии с одним из следующих аргументов EndDialog , связанных с кнопкой, на которую нажал пользователь:
Повторная попытка. Все значения, добавленные в таблицу ListBox , удаляются, а также повторяется вся процедура затрат на файлы, которые по-прежнему используются. Если один или несколько процессов по-прежнему определены как использующие файлы для перезаписи или удаления, процесс повторяется; В противном случае InstallValidate возвращает элемент управления установщику с состоянием msiDoActionStatusSuccess.
Выход. Действие InstallValidate немедленно возвращает элемент управления установщику с состоянием msiDoActionStatusUserExit. Установка завершается.
Любое другое возвращаемое значение. Действие InstallValidate немедленно возвращает управление установщику с состоянием msiDoActionStatusSuccess. В этом случае, так как один или несколько файлов по-прежнему используются, последующие действия InstallFiles и (или ) InstallAdminPackage должны запланировать замену или удаление используемых файлов при перезапуске системы.
Если в базе данных нет таблицы ListBox , installValidate завершает работу без ошибок.
Точка с запятой является разделителем списка для преобразований, источников и исправлений и не должна использоваться в этих именах файлов или путях.
Файлы, помеченные как доступные только для чтения в расположении только для чтения, никогда не считаются используемыми установщиком.
По умолчанию для пользователя отображается диалоговое окно "Свободное место на диске ", содержащее кнопки "Прервать" и "Повторить попытку", если уровень пользовательского интерфейса является базовым.