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


Анализ сообщений установщика Windows

Внешний обработчик пользовательского интерфейса может обрабатывать список сообщений установщика, указанных параметром dwMessagedFilter функции MsiSetExternalUI. Некоторые из этих сообщений содержат строки, которые можно использовать напрямую, а другие сообщения могут быть проанализированы и обработаны внешним обработчиком пользовательского интерфейса, чтобы быть полезным. Внешний обработчик пользовательского интерфейса может отслеживать сообщения установщика Windows, не выполняя никаких операций, влияющих на установку.

Следующие сообщения установщика Windows содержат строки, которые могут отображаться диалоговым окном и не требуют дополнительной обработки. Эти сообщения содержат список кнопок и значков, отображаемых диалоговым окном. Значения МБ_ICONMASK, МБ_DEFMASK и МБ_TYPEMASK можно использовать для указания значков и кнопок.

INSTALLMESSAGE_FATALEXIT

Произошло преждевременное завершение установки.

INSTALLMESSAGE_ERROR

Отформатированный сообщение об ошибке.

INSTALLMESSAGE_WARNING

Отформатированный предупреждающий сообщение.

INSTALLMESSAGE_INFO

Форматированный сообщение журнала.

INSTALLMESSAGE_USER

Отформатированное сообщение пользователя.

INSTALLMESSAGE_OUTOFDISKSPACE

Форматируемое сообщение, указывающее состояние места на диске

Обработчик внешних пользователей может использовать следующие сообщения установщика Windows для мониторинга последовательности пользовательского интерфейса установщика Windows. Установщик отправляет эти сообщения в начале последовательности пользовательского интерфейса установщика Windows, по мере отображения каждого диалогового окна и в конце последовательности пользовательского интерфейса. Для использования этих сообщений обработка не требуется.

INSTALLMESSAGE_TERMINATE

Это сообщение указывает конец последовательности пользовательского интерфейса. Строка является пустой строкой.

INSTALLMESSAGE_INITIALIZE

Это сообщение указывает, что последовательность пользовательского интерфейса запущена. Строка является пустой строкой.

INSTALLMESSAGE_SHOWDIALOG

Строка содержит имя текущего диалогового окна.

Для следующих сообщений установщика Windows требуется дополнительная обработка внешним обработчиком пользовательского интерфейса.

INSTALLMESSAGE_RESOLVESOURCE

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

INSTALLMESSAGE_FILESINUSE

Внешний пользовательский интерфейс должен отображать диалоговое окно FilesInUse в ответ на это сообщение.

INSTALLMESSAGE_RMFILESINUSE

Внешний пользовательский интерфейс должен отображать диалоговое окно MsiRMFilesInUse в ответ на это сообщение. Доступно начиная с установщика Windows версии 4.0. Дополнительные сведения об этом сообщении см. в разделе "Использование диспетчера перезапуска с внешним пользовательским интерфейсом".

INSTALLMESSAGE_ACTIONSTART

Это сообщение содержит сведения о текущем действии. Формат действия [1]: [2]. [3], где двоеточие используется для разделения поля 1 и поля 2, а период используется для разделения поля 2 и поля 3. Поле [1] содержит время начала действия с использованием формата свойства Time . Поле [2] содержит имя действия из таблицы последовательностей. Поле [3] предоставляет описание действия из таблицы ActionText или из функции MsiProcessMessage.

INSTALLMESSAGE_ACTIONDATA

Формат этой строки указывается значением шаблона, предоставленным в таблице ActionText или функцией MsiProcessMessage. После INSTALLMESSAGE_ACTIONSTART сообщения может быть неограниченное количество сообщений INSTALLMESSAGE_ACTIONDATA.

INSTALLMESSAGE_COMMONDATA

Это сообщение содержит три подтипа: Language, Caption и CancelShow. Строка может содержать три поля, разделенные числом, за которым следует двоеточие. Не все поля обязательны. Сообщение может быть строкой NULL или пустой ("").

Язык

Поле 1 содержит значение 0, указывающее, что эта строка содержит сведения о языке. Поле 2 содержит значение языка , которое является числовым идентификатором языка (LANGID.) Поле 3 — это значение, представляющее кодовую страницу ANSI.

Заголовок

Поле 1 содержит значение 1, указывающее, что эта строка содержит текст подпись или заголовка. Поле 2 содержит текст, который внешний обработчик пользовательского интерфейса может использовать в качестве подпись заголовка для диалогового окна. Поле 3 равно NULL или пустой ("") строке. Поле 3 может быть отсутствует в сообщении заголовка.

Отмена шоу

Поле 1 содержит значение 2, указывающее, что эта строка содержит сведения о том, следует ли отображать кнопку отмены. Если кнопка отмены должна быть скрыта, поле 2 содержит значение 0. Если кнопка отмены должна отображаться, поле 2 содержит значение 1.

INSTALLMESSAGE_PROGRESS

Это сообщение содержит четыре подтипа: Reset, ActionInfo, ProgressReport и ProgressAddition. Внешний обработчик не должен действовать ни на один из этих сообщений, пока не будет получено первое сообщение о ходе сброса. Это позволяет оценить общее количество тиков для индикатора выполнения.

Сброс

Поле 1 содержит значение 0, указывающее сброс индикатора выполнения. Поле 2 содержит общее количество галок в индикаторе выполнения. Поле 3 содержит значение 0 для перемещения вперед индикатора хода выполнения. Поле 3 содержит значение 1 для движения обратного индикатора хода выполнения. Значение 0 в поле 4 означает, что выполняется установка, а оставшееся время может быть вычисляется. Значение 1 в поле 4 означает, что выполняется скрипт и "Подождите..." можно отобразить сообщение. Оценка общего числа галок является приблизительный и может быть неточной.

Actioninfo

Поле 1 содержит значение 1, указывающее, что эта строка содержит сведения о действии. Поле 2 содержит количество тиков, перемещаемых индикатором хода выполнения для каждого сообщения ActionData, отправленного текущим действием. Если поле 3 содержит значение 0, пропустите поле 2. Если поле 3 содержит значение 1, увеличьте индикатор хода выполнения по количеству галок в поле 2 для каждого сообщения ActionData, отправленного текущим действием. Поле 4 не используется.

ProgressReport

Поле 1 содержит значение 2, указывающее, что эта строка содержит сведения о ходе выполнения. Поле 2 содержит количество тиков, которые перемещены индикатором выполнения. Поле 3 не используется. Поле 4 не используется.

ProgressAddition

Поле 1 содержит значение 3, указывающее, что действие может добавлять галочки на индикатор выполнения. Поле 2 содержит количество галок, добавляемых к общему ожидаемому количеству тиков хода выполнения. Поле 3 не используется. Поле 4 не используется.