[WiX] Incluyendo ventanas en un instalador

En las entradas anteriores hemos generado un instalador sencillo que permite actualizar instalaciones anteriores, pero su interfaz de usuario es cuasi nulo: sin preguntar nada, sale la ventana de Windows Installer y procede a realizar la instalación.

Instalación básica

Al terminar, se cierra sin mostrar confirmación alguna. Aunque esto puede ser suficiente en algunos casos, vamos a ver como incluir en la instalación las típicas ventanas de Bienvenida, Seleccionar carpeta, Proceso y Fin de la instalación.

En primer lugar, WiX ofrece por separado las interfaces gráficas en la librería WixUIExtension.dll, que debemos incluir en la generación del instalador en la herramienta light con los siguientes parámetros:

light PicaSetup.wixobj -cultures:es-ES -ext WixUIExtension.dll

Con esto tendremos disponibles las ventanas en nuestro instalador, y además en nuestro idioma. Pero para que se usen tenemos que activarlas dentro de la etiqueta Project:

<Property Id="WIXUI_INSTALLDIR" Value="AppDir"/>
<UIRef Id="WixUI_InstallDir" />

Empecemos por el final: la etiqueta UIRef es la que incorpora las ventanas al instalador. Su valor es la plantilla de instalador que queremos usar, en este caso WixUI_InstallDir identifica la típica instalación con Bienvenida, Licencia, Carpeta, Progreso y Fin. Hay otras plantillas

Por otro lado, la etiqueta Property tiene una utilidad auxiliar pero muy importante: asociar el resultado de la ventana donde se selecciona la carpeta destino con el valor usado en el elemento Directory para instalar el producto. De no indicarla, el directorio seleccionado en esa ventana no se usaría después. Debe contener como Value el Id de la etiqueta Directory final donde vamos a instalar. En nuestro ejemplo anterior era AppDir, ya que se corresponde con la carpeta última donde se instalan los componentes.

Con esto ya podemos generar (usando los parámetros de light indicados antes para considerar la librería de UI) y tendremos un instalador totalmente funcional. Pero podemos personalizar su apariencia mediante variables de WiX.

Variables de WiX

Mediante las variables de WiX podemos pasar parámetros para la generación del instalador. Son parámetros para su construcción, no para el momento de la instalación. El valor de estas variables puede establecerse de dos formas:

  • En el archivo wxs, mediante un elemento WixVariable dentro de Wix:
    <WixVariable Id=”var” Value=”valor”/>
  • Como argumento de línea de comandos de la herramienta light:
    light PicaSetup.wxsobj -dvar=valor

Estas variables pueden ser consumidas también por las extensiones de WiX, y en nuestro caso WixUIExtension.dll acepta unas cuantas de ellas, como WixUIBannerBmp o WixUIDialogBmp.

Cambiando el texto de licencia

Una aplicación práctica, y quizá la más prioritaria en un instalador comercial, se refiere a la ventana de licencia, que por defecto muestra la licencia CPLv2 en inglés:

Licencia CPL por defecto en WIX

Esto desentona tanto por el idioma como porque quizá esta no sea nuestra licencia elegida. Para cambiarlo, podemos establecer la variable WixUILicenseRtf con la ruta donde encontrar un archivo RTF con la licencia. Esta variable puede declararse en el archivo wxs:

<WixVariable Id="WixUIDialogBmp" Value="licencia.rtf"/>

o bien como parámetro de la herramienta light:

light PicaSetup.wxsobj -dWixUIDialogBmp=licencia.rtf

En resumen, las posibilidades de configuración del interfaz gráfica del instalador son enormes en WiX, sirva este artículo como sencillo ejemplo de cómo conseguir un instalador decente y muy estándar para nuestras aplicaciones.

Anuncios
Esta entrada fue publicada en Setup y etiquetada , , , , , . Guarda el enlace permanente.

Una respuesta a [WiX] Incluyendo ventanas en un instalador

  1. Larry Soza dijo:

    Hola todo bien solo que donde colocas creo que quisiste poner ya que la variable WixUIDialogBmp es para la imagen que sale al lado izquierdo del instalador

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s