In 3.0, all !(bind.*) variables are generated by the binder itself (I think all of them are file information values) while !(wix.*) values can be declared in .wxs/.wxi files using the <WixVariable> element or on light's commandline (which is populated by <WixVariables> elements in MSBuild/Votive).
See http://wix.sourceforge.net/manual-wix3/light.htm for the !(bind.*) variables that are defined (as of latest public 3.5 build) or the equivalent page in your wix.chm for the variables defined in your build. BTW, all three namespaces (bind, wix, and loc) are treated by the same code at about the same time, but are populated by three different "repositories". -----Original Message----- From: Castro, Edwin G. (Hillsboro) [mailto:edwin.cas...@fiserv.com] Sent: Monday, June 21, 2010 6:24 PM To: General discussion for Windows Installer XML toolset. Subject: [WiX-users] Using WixVariables to Pass Build-Time Information to a WixLib 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 ------------------------------------------------------------------------------ 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