2011-07-16 14 views
8

Con el fin de comprobar si se instala .NET Framework se puede utilizar esta condición:no entienda a las condiciones de WiX lógica booleana

<Condition Message="This application requires .NET Framework"> 
    <![CDATA[Installed OR NETFRAMEWORK20]]> 
</Condition> 

No entiendo por qué los dos sub-condiciones (con aparato, NETFRAMEWORK20) se combinan con un operador OR, en lugar yo esperaría algo como esto cuando ambas condiciones se combinan con un AND:

<![CDATA[Installed AND NOT NETFRAMEWORK20]]> 

dónde está mi malentendido?

Respuesta

13

Debido a que el elemento <Condition> es una condición para que el instalador continuar (y el mensaje sólo se utiliza si la condición falla).

Por lo tanto, queremos continuar ejecutar esta instalación si bien :

  1. Este paquete ya está instalado. Estamos realizando otra acción (por ejemplo, eliminación) y no necesitamos verificar ninguna otra condición, o
  2. (Debido a que la primera condición no era cierta) Estamos específicamente ejecutando para instalar el paquete, y hemos detectado que .NET Framework 2.0 (o mejor) está instalado.

Si el <Condition> fue sólo NETFRAMEWORK20, y alguien acababa desinstalado .NET Framework, y luego trató de desinstalar el paquete, la condición podría fallar y mostrar el mensaje "Esta aplicación requiere .NET Framework" - lo cual sería muy molesto

+0

¡Ah! Pensé equivocadamente 'INSTALLED = true' si la instalación está actualmente en progreso. Gracias por la aclaración. Muy buena respuesta – nabulke

Cuestiones relacionadas