I'm using WiX 3.0.5419.0.

I have a WixLib with a handful of shared infrastructure for our installers. 
Because this WixLib is shared among a number of projects I need to build the 
WixLib separately. One of the pieces of infrastructure is a nearly complete 
Product section. Mostly it is missing a handful of pieces of information that I 
provide on a per-setup basis using WixVariables:

<Product Id="*" Name="!(wix.ProductName)" Version="!(wix.AssemblyVersion)" ...>
...
</Product>

I'm running into a problem. Candle doesn't like !(wix.AssemblyVersion). It 
doesn't complain when I use !(bind.AssemblyVersion) though.

As I understand it, binder variables are very similar to WixVariables but they 
are not defined until just before the binder generates a MSI. The documentation 
suggests that I can define custom binder variables but I can't seem to figure 
out how to do that.

I changed my WixLib to:

<Product Id="*" Name="!(wix.ProductName)" Version="!(bind.AssemblyVersion)" ...>
...
</Product>

This now compiles but light gives me an error:

error LGHT0298: Unresolved bind-time variable !(bind.AssemblyVersion).

My product has the following:

<?include ..\..\..\AssemblyVersion.wxi?>
<WixVariable Name="ProductName" Value="$(var.ProductName)"/>
<WixVariable Name="AssemblyVersion" Value="$(var.AssemblyVersion)"/>

Where $(var.ProductName) is defined in DefineConstants in the *.wixproj and 
$(var.AssemblyVersion) is defined in the included AssemblyVersion.wxi. 
Unfortunately, I still get the same error from light.

I thought I had read somewhere that I need to specify custom binder variables 
at the command line but I can't find where I thought I read that nor anything 
that says how to specify custom binder variables. I tried to set the 
WixVariables MSBuild property in the *.wixproj which produces the appropriate 
command line option (-dAssemblyVariable=1.2.3) but that doesn't help. I think 
the WixVariables property accomplishes the same thing as the <WixVariable/> 
element and thus does not constitute a bind-time variable.

The WiX help file says the following about custom binder variables:

"You can create your own binder variables using the WixVariable element or by 
simply typing your own variable name in the following format: 
!(bind.VariableName)"

That suggests that I should be able to use my original approach using 
<WixVariable/> and/or pass it on the command line to light using the -d switch 
(WixVariables MSBuild property).

What is the difference between !(wix.VariableName) and !(bind.VariableName)?

How do I specify a value for !(bind.AssemblyVersion)?

Edwin G. Castro
Software Developer - Staff
Electronic Banking Services
Fiserv
Office: 503-746-0643
Fax: 503-617-0291
www.fiserv.com<http://www.fiserv.com/>
P Please consider the environment before printing this e-mail

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to