In order to check if .NET framework is installed you can use this condition:
<Condition Message="This application requires .NET Framework">
<![CDATA[Installed OR NETFRAMEWORK20]]>
</Condition>
I don't understand why the two sub-conditions (Installed, NETFRAMEWORK20) are combined with an OR operator, rather I would expect something like this where both conditions are combined with an AND:
<![CDATA[Installed AND NOT NETFRAMEWORK20]]>
Where is my misunderstanding?