Creación de un control ProgressBar

Windows Installer contiene una funcionalidad para mostrar un indicador de progreso en un cuadro de diálogo de visualización de la acción. El control ProgressBar representa gráficamente la instalación de componentes individuales e informa bien del tiempo total transcurrido con respecto al tiempo que queda, bien del tiempo total aproximado que queda para que la instalación se complete.

Para determinar el tiempo total previsto de la instalación, el instalador hace un seguimiento de los tics de progreso totales previstos según cada acción durante la generación del script de ejecución. Cuando la generación de scripts se completa, se almacena el total de tics de progreso y comienza la instalación.

Los mensajes de progreso donde se detalla el número transcurrido de tics de progreso se envían al controlador de mensajes activo a medida que cada acción del script se va ejecutando. En cada mensaje de progreso, el instalador difunde un evento SetProgress ControlEvent al cuadro de diálogo activo actualmente. La secuencia de interfaz de usuario debe crearse para generar el cuadro de diálogo de visualización de la acción durante la ejecución del script para recibir los mensajes de SetProgress ControlEvent del instalador.

Cuando el cuadro de diálogo de visualización de la acción recibe un evento SetProgress ControlEvent, consulta la tabla EventMapping para ver si hay controles que se están suscribiendo al ControlEvent. El control ProgressBar del cuadro de diálogo de visualización de la acción está suscrita con el atributo de control Progress especificado en la columna Attributes. El atributo de control Progress especifica que al control ProgressBar se le van a pasar los valores "ticksSoFar" y "totalTicks" junto con el control SetProgress ControlEvent. El control de barra de progreso emplea esta información para desplegar la barra gráfica de izquierda a derecha en una instalación y de derecha a izquierda en una operación de reversión.

Además, el instalador difunde un evento TimeRemaining ControlEvent en cada mensaje de progreso. El tiempo total restante de la instalación se determina calculando primero la tasa de ejecución, que es el número total de tics transcurridos dividido entre el tiempo total desde que se inició la instalación. Dividir el total de tics restantes entre la tasa de ejecución proporciona el tiempo aproximado restante.

Cuando el cuadro de diálogo de visualización de la acción recibe el evento TimeRemaining ControlEvent, vuelve a buscar en la tabla EventMapping cualquier control que haya suscrito. Para ver el tiempo restante, hay que suscribir un control Text al evento TimeRemaining ControlEvent con el atributo de control TimeRemaining especificado en la columna Attributes.

El control Text suscrito consulta la tabla UIText para obtener una cadena de plantilla con parámetros denominada "TimeRemaining". Esta cadena tiene dos parámetros: [1] para los minutos y [2] para los segundos. El control Text convierte cada valor en minutos y segundos, evalúa la cadena de plantilla TimeRemaining y actualiza el control de texto con la nueva información.

Si el nivel de visualización de la interfaz de usuario está establecido en básico o en un nivel inferior, el instalador muestra un cuadro de diálogo predeterminado que contiene una barra de progreso y un campo de texto TimeRemaining. Para obtener más información, vea Niveles de interfaz de usuario.