I think where you're getting confused is that there are more than one type
of "variable" in WiX. Firstly, there are preprocessor variables and
condition, which are referenced like this:

  $(var.VariableName)
  !(var.LateBoundVariableName)
  $(env.EnvironmentVariableName)
  !(loc.StringID)

These are available at build time and are used in things like string paths
and to conditionally include fragments of code based on your build
configurations. (Check out this link:
http://wix.sourceforge.net/manual-wix3/preprocessor.htm)

Then there are the MSI properties and conditions, which use a different
syntax, because it's defined by MSI and not WiX.  These are avaiable at
runtime and are used to perform logic in your install - conditionally
performing an action based on the environment or feature selection, getting
information, controlling your installation directories and stuff like that.
(Check out this link:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa368012(v=vs.85).aspx
)

What you have there is an MSI condition, which looks like it's based on
MainFeature being installed. To break this down:

          (&MainFeature = 3)

&FeatureName gets the requested state of the feature. &MainFeature = 3
means "if MainFeature is selected for installation, return true".

          AND NOT

Pretty standard boolean logic - if the left hand side is true, but the
right hand side is false, this will return true.

         (!MainFeature = 3)]

!FeatureName gets the *current state* of the feature, rather than the
requested state. This means "if MainFeature is *currently installed* for
installation, return true".

Put it all together, and what you get is this: "If MainFeature is selected
for installation, and it's NOT currently installed, return true".

Hope that helps


On 29 May 2013 09:46, Benjamin Mayrargue <benja...@vapolia.fr> wrote:

> Hi all,
> i have a noob question.
>
> In this snippet there is a & and a ! before the variable MainFeature.
> what does that mean ?
>
> <Condition><![CDATA[(&MainFeature = 3) AND NOT (!MainFeature =
> 3)]]></Condition>
>
> In the wix chm, i found the list of "Wix built-in variables.
> But i'm unable to reference them, either in the bundle, or in my managed
> bootstrapper. What is the correct way to make them available ? (i'm using
> only a bundle).
>
> thks :)
>
> ------------------------------------------------------------------------------
> Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
> Get 100% visibility into your production application - at no cost.
> Code-level diagnostics for performance bottlenecks with <2% overhead
> Download for free and get started troubleshooting in minutes.
> http://p.sf.net/sfu/appdyn_d2d_ap1
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to