2012-09-07 23 views
13

Estoy buscando usar Burn como programa de arranque para un instalador y necesito pasar un par de argumentos en el MSI.Personalizar el tema de WiX Burn con entradas adicionales

Sé que la manera de hacerlo es usar elementos MsiProperty, el problema que estoy teniendo es mostrar la interfaz de usuario para capturar esas propiedades. Soy consciente de que puedo crear una interfaz de usuario completamente personalizada a través del host de la aplicación bootstrapper administrado, sin embargo, esto se está convirtiendo en mucho trabajo de implementar por un ajuste relativamente menor para el programa de arranque.

He encontrado this blog article con describe cómo hacer personalizaciones de UI básicas y me pregunto si es posible modificar la IU de Burn para incluir un simple checkbox/textbox (cuyo valor se usa para configurar una variable de Burn para que pueda pasarla) en mi MSI) de una manera similar, o ¿necesito usar el host de la aplicación bootstrapper administrada después de todo?

Respuesta

33

No encuentro ninguna documentación sobre esto en ningún lado, pero un poco de experimentación + lectura del código fuente revela que esto es bastante sencillo: simplemente configure Name del control (por ejemplo, Checkbox) con el nombre de una variable Burn (no una variable WiX - que son diferentes), al igual que (ver Burn UI Customisations para obtener más información sobre dónde poner esto)

<Checkbox Name="MyCheckBox" ...>Hello, checkbox</Checkbox> 

Si lo desea, puede definir una variable quemadura por debajo de su paquete para inicializar a un cierto valor (utilice 1 para "marcado" y 0 para "no marcado" con casillas de verificación)

<Variable Name="MyCheckBox" Value="1" /> 

Sin embargo no es obligatorio, la variable se creará automáticamente para usted de todos modos. Tenga en cuenta que debe ser un Variable, no un WixVariable - estos son diferentes.

Por último, para establecer una propiedad de MSI basado en esta variable añadir un elemento MsiProperty como un hijo de su elemento MsiPackage, al igual que

<MsiPackage Name="MyMsi.msi" ...> 
    <MsiProperty Name="SOMEPROPERTY" Value="[MyCheckBox]" /> 
</MsiPackage> 

El valor de la propiedad "SOMEPROPERTY" MSI a continuación, se establece en 0 o 1 basado en el estado verificado de su casilla de verificación.

+0

También uso este método, funciona. Probablemente sea seguro aceptar esto como una respuesta :) –

+0

Gran ayuda gracias, sin embargo, estaba obteniendo SOMEPROPERTY = "" pasando al MSI hasta que definí en la .. Parece que no se creó automáticamente. – user2128898

Cuestiones relacionadas