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


Создание ICE

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

При создании пользовательских действий ICE следует выполнить следующие действия:

  • Базовые icES зависят только от пользовательских действий типов, перечисленных в таблице.
  • Вызовите MsiProcessMessage и опубликуйте INSTALLMESSAGE_USER тип сообщения. При создании сообщений ICE следует формату сообщения в руководстве по ice message.
  • Напишите ice таким образом, чтобы он захватывал все ошибки API и всегда возвращает ERROR_SUCCESS. Это необходимо, чтобы последующие пользовательские действия выполнялись после сбоя ICE.

Пользовательские действия ICE ограничены следующими типами пользовательских действий.

Настраиваемый тип действия Description
Пользовательский тип действия 1 DLL в двоичном потоке
Настраиваемый тип действия 2 EXE в двоичном потоке
Настраиваемый тип действия 5 JScript в двоичном потоке
Настраиваемый тип действия 6 VBScript в двоичном потоке
Настраиваемый тип действия 37 Код JScript в виде строки
Тип пользовательского действия 38 Код VBScript в виде строки

 

При создании пользовательского действия ICE не выполните следующие действия.

  • Не предполагайте, что дескриптор обработчика, который получает ICE, является экземпляром установки базы данных установщика. Если это не экземпляр установки, определенные свойства не определены, исходные и целевые каталоги не разрешаются, а текущие состояния компонентов не определены.
  • Не полагаться на предыдущее выполнение или не выполнение каких-либо действий установщика, пользовательского действия или другого ICE. Так как предыдущий ICE, возможно, создал временные столбцы в любой таблице, авторы должны ссылаться на столбцы по имени по возможности. IcEs должны очистить все временные столбцы или таблицы перед их выходом.
  • Не предполагайте, что авторы имеют доступ к изображению исходного каталога базы данных.
  • Не предполагайте, что изменения, внесенные в базу данных, не сохраняются.

Пример ICE в C++

Пример ICE в VBScript