Compartir a través de


Envío de mensajes a Windows Installer mediante MsiProcessMessage

Los mensajes enviados mediante MsiProcessMessage son los mismos mensajes recibidos por la función devolución de llamadainstallUI\_HANDLER si se llamó a MsiSetExternalUI. De lo contrario, Windows Installer controla los mensajes. Para obtener más información, consulta Analizar mensajes de Windows Installer.

Por ejemplo, para enviar un mensaje de INSTALLMESSAGE_ERROR con el icono de MB_ICONWARNING y los botones MB_ABORTRETRYCANCEL:

PMSIHANDLE hInstall;
PMSIHANDLE hRec;
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_ERROR|MB_ABORTRETRYIGNORE|MB_ICONWARNING), hRec);

Donde hInstall es el controlador de la instalación, proporcionado a una acción personalizada o al controlador hProduct de MsiOpenProduct o MsiOpenPackage, y hRec es el registro que contiene la información de error al formato. Para obtener más información sobre cómo se realiza el formato, consulte MsiFormatRecord.

De forma predeterminada, si se envía un mensaje de INSTALLMESSAGE_ERROR o INSTALLMESSAGE_FATALEXIT sin especificar tipos de icono o de botón, se usan MB_OK, ningún icono y MB_DEFBUTTON1.

Windows Installer no etiqueta el botón ABORTAR con la cadena "Abortar" al mostrar un cuadro de mensajes con la especificación del botón MB_ABORTRETRYIGNORE, en su lugar etiqueta el botón con la cadena "Cancelar". Todos los mensajes de error se abstienen de usar la palabra "Abortar" y, en su lugar, usan la palabra "Cancel".

El parámetro hRecord de la función MsiProcessMessage depende del tipo de mensaje enviado a MsiProcessMessage. La siguiente lista detalla los requisitos del registro en relación con el tipo de mensaje:

INSTALLMESSAGE_FATALEXIT

 

INSTALLMESSAGE_INFO

 

INSTALLMESSAGE_OUTOFDISKSPACE

Campo Descripción
0 Plantilla para el formato de la cadena resultante. Para obtener más información, consulte MsiFormatRecord. Se hace referencia a los campos del registro mediante [1] para el campo 1, [2] para el campo 2, etc.
De 1 a n Todos los campos subsiguientes están directamente relacionados con los campos a los que hace referencia la plantilla en el campo 0.

 

Si el campo 0 es null, la cadena recibida por el controlador de interfaz de usuario tiene el formato: 1: [datos del campo 1] 2: [datos del campo 2] lo que significa que para cada campo del registro, la cadena contiene el número de campo seguido de los datos almacenados en el campo.

Los mensajes de información de MsiProcessMessage se registran cuando MsiEnableLog, la opción de línea de comandos "/l" o la directiva de registro especifican "I" o INSTALLLOGMODE_INFO.

INSTALLMESSAGE_ERROR

 

INSTALLMESSAGE_WARNING

 

INSTALLMESSAGE_USER

Para usar un mensaje de la tabla Error.

Campo Descripción
0 Debe ser NULL.
1 Número de mensaje en la tabla Error.
De 2 a n Relacionado con el mensaje especificado en la tabla Error.

 

Por ejemplo.

Campo Tipo Datos
0 string null
1 int 1304
2 string Myfile.txt

 

El mensaje resultante recibido del controlador de interfaz de usuario es:

Error 1304. Error al escribir en el archivo: Myfile.txt. Compruebe que tiene acceso a ese directorio.

Si el campo 0 no es NULL, el mensaje de la tabla de errores se invalida. En su lugar, la plantilla de campo 0 determina el formato del mensaje.

El mensaje también puede especificar los botones, incluido el botón predeterminado, y el icono para su uso con el mensaje como se mencionó anteriormente. Los tipos de botón e icono se enumeran en INSTALLUI_HANDLER.

INSTALLMESSAGE_COMMONDATA

Este mensaje se envía para habilitar o deshabilitar el botón Cancelar en un cuadro de diálogo de progreso.

Campo Descripción
0 Sin usar.
1 2 hace referencia al botón Cancelar.
2 Un valor de 1 indica que el botón Cancelar debe estar visible. Un valor de 0 indica que el botón Cancelar no debe estar visible.

 

Por ejemplo, para deshabilitar u ocultar el botón Cancelar, el registro aparecería de la siguiente manera.

Campo Tipo Datos
0 string null
1 int 2
2 int 0

 

INSTALLMESSAGE_ACTIONSTART

 

INSTALLMESSAGE_ACTIONDATA

El registro INSTALLMESSAGE_ACTIONSTART determina el formato del registro ActionData.

Campo Descripción
0 null
1 Nombre de acción. El nombre de este campo no debe ser null.
2 Descripción de la acción.
3 Plantilla de acción. Esto se usa para ActionData cuyo mensaje se está formateando según esta plantilla.

 

No haga referencia al campo 0 en el mensaje Plantilla de acción.

El registro INSTALLMESSAGE_ACTIONDATA tiene el formato siguiente.

Campo Descripción
0 null
De 1 a n Depende del campo 3 del mensaje o plantilla de INSTALLMESSAGE_ACTIONSTART correspondiente especificado en la tabla ActionText.

 

Por ejemplo, el registro INSTALLMESSAGE_ACTIONSTART.

Campo Tipo Datos
0 string null
1 string MyAction
2 string Esta es la descripción de "MyAction"
3 string Plantilla MyAction: los datos field1 son [1]. los datos del campo 2 son [2].

 

La plantilla para INSTALLMESSAGE_ACTIONSTART (campo 3) hace referencia a los campos 1 y 2, el registro de INSTALLMESSAGE_ACTIONDATA debe tener 2 campos que contengan los datos garantizados. Los campos pueden ser campos de cadena o enteros.

Registro INSTALLMESSAGE_ACTIONDATA.

Campo Tipo Datos
0 string null
1 int 2
2 string ActionData para MyAction

 

INSTALLMESSAGE_FILESINUSE

El registro FILESINUSE es un registro de longitud variable.

Campo Descripción
0 Este campo puede ser null. Para una instalación mediante una interfaz de usuario básica, este campo puede especificar texto estático para mostrarlo en el control ListBox del cuadro de diálogo FilesInUse. Para una instalación mediante una interfaz de usuario completa, este campo no tiene ningún efecto porque el texto se especifica mediante la creación del cuadro de diálogo FilesInUse personalizado.
1 Nombre del archivo en uso.
2 Este campo identifica el proceso que contiene el archivo en uso. Windows Installer versión 4.0: Identificador de proceso (PID) del proceso o el título de la ventana del proceso.
Windows Installer versión 3.1 y anteriores: Este campo debe ser el identificador de proceso (PID) del proceso.

 

Por ejemplo, para enviar un mensaje FilesInUse que muestra dos archivos en uso, red.exe y blue.exe, el registro tiene cuatro campos más el campo 0. El formato del registro sería como se muestra en la tabla siguiente. En este ejemplo se requiere Windows Installer versión 4.0.

Windows Installer versión 3.1 y anteriores: Los campos 2 y 4 del ejemplo siguiente deben contener los PIN de los procesos que contienen red.exe y blue.exe en uso.

Campo Descripción
0 null
1 Red.exe
2 Título de la ventana rojo
3 Blue.exe
4 Título de la ventana azul

 

Nota:

En la versión 4.0 de Windows Installer, si el PID pasado desde el servicio no tiene un título de ventana, como una aplicación de bandeja del sistema, el archivo no se muestra y el registro detallado contiene los siguientes mensajes.

 

File In Use: -<FileName>- Window could not be found. Process ID: <PID>
No window with title could be found for FilesInUse

INSTALLMESSAGE_RESOLVESOURCE

El registro INSTALLMESSAGE_RESOLVESOURCE tiene siete campos. Para que INSTALLMESSAGE_RESOLVESOURCE funcione correctamente, es posible que un controlador de interfaz de usuario externo no controle el mensaje de INSTALLMESSAGE_RESOLVESOURCE. Windows Installer debe controlar el mensaje INSTALLMESSAGE_RESOLVESOURCE. Es decir, el controlador de interfaz de usuario externo devuelve 0 para indicar "ninguna acción realizada" al filtrar el mensaje de INSTALLMESSAGE_RESOLVESOURCE. El procedimiento recomendado es evitar el envío de un mensaje RESOLVESOURCE.

Campo Descripción
0 null
1 null
2 Nombre del paquete.
3 Código de producto.
4 Si se conoce, la ruta de acceso relativa puede ser null.
5 0
6 Si se va a validar el código del paquete. Un valor de '1' indica que se debe validar el código del paquete. Un valor de '0' indica que no se debe validar el código del paquete.
7 Disco necesario de la tabla multimedia. Un valor de '0' indica que cualquier disco es aceptable.