tutorial page for developers code wix windows-installer wix3.6

page - wix for developers



Usar condiciĆ³n if para comparar valores de variables en WiX (1)

¿Podrías hacerlo así sin las variables?

<Property Id="USERNAME" Value="local"/>

<Condition Message="The username is local, please enter a username for the installation to proceed">USERNAME = "local"</Condition>

Esto sería correcto si el usuario ingresara un nombre de usuario, luego la instalación continuaría pero si el usuario no lo hiciera, fallaría ya que el valor predeterminado es local.

Me pregunto cómo se ingresa el nombre de usuario. ¿Esto es a través de la línea de comando o desde un diálogo de entrada?

Si desde un diálogo sugiero tener un cuadro de diálogo de error en lugar de abortar la instalación. Puedo estar completamente equivocado, pero solo darte opciones.

Espero que esto ayude...:)

EDITAR:

Para hacer lo que quiera, simplemente agregue una condición a su componente que tenga su servicio dentro. Tiene dos componentes:

<Component Id="ServiceOne" Guid=''*'' Directory="Directory"> //All your service tags etc <Condition><![CDATA[USERNAME = "local"]]></Condition> </Component> <Component Id="ServiceTwo" Guid=''*'' Directory="Directory"> //All your service tags etc <Condition><![CDATA[USERNAME <> "local"]]></Condition> </Component>

Quiero verificar si el usuario ha pasado un argumento para USERNAME para el cual el valor predeterminado es local. Estoy tratando de ver si recibo un mensaje si el valor es local. El problema es de la siguiente manera. Esto no funciona

<Property Id="USERNAME" Value="local"/> <?define uName = [USERNAME]?> <?if $(var.uName) = local ?> <Condition Message="$(var.uName)">0</Condition> <?endif?>

Pero, si cambio el código a lo siguiente, dará el mensaje.

<?define uName = local?> <?if $(var.uName) = local ?> <Condition Message="$(var.uName)">0</Condition> <?endif?>

Y el siguiente código asigna el valor de la propiedad USERNAME a la variable uName .

<Property Id="USERNAME" Value="local"/> <?define uName = [USERNAME]?> <Condition Message="$(var.uName)">0</Condition>

El código anterior imprime ''local'' en un cuadro de mensaje.

Intenté muchos escenarios y pude localizar dónde está el problema. Al comparar valores de variables, que se asigna como,

<?define uName = [USERNAME]?>

Aunque el valor se asigna a uName, no podemos hacer la comparación. ¿Estoy haciendo algo mal aquí? ¿O hay otra forma de este tipo de problema?