[wix-users] Unable to correctly specify a variable for WiX within Visual Studio

Phill Hogland phill.hogland at rimage.com
Wed Mar 9 09:33:19 PST 2016


Another approach, similar to using DefineConstants is to use CompilerAdditionalOptions in the project file:
    <CompilerAdditionalOptions>
    $(CompilerAdditionalOptions)
      -dOutputNamePreProcessorVar="$(OutputName)"
    </CompilerAdditionalOptions>

Or in the VS Project Properties in the Tools Settings windows:
-dOutputNamePreProcessorVar="$(OutputName)"

In both cases this assumes that the project file defines a MSBuild property named <OutputName>MyName</OutputName> or that there is an Environment variable defined as OutputName.

Then in the .wxs the preprocessor variable is consumed using the $(var.OutputNamePreProcessorVar) syntax.

________________________________________
From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of Hoover, Jacob <Jacob.Hoover at greenheck.com>
Sent: Tuesday, March 8, 2016 2:48 PM
To: WiX Toolset Users Mailing List
Subject: Re: [wix-users] Unable to correctly specify a variable for WiX within  Visual Studio

<PropertyGroup>
  <JavaDocBase>c:\javadocs</JavaDocBase>
<DefineConstants>
      $(DefineConstants);
      VersionMajorMinor=$(VersionMajorMinor);
      VersionBuild=$(VersionBuild);
      VersionQFE=$(VersionQFE);
      BundleUpgradeCode=$(BundleUpgradeCode);
      JavaDocBase=$(JavaDocBase);
</DefineConstants>
</PropertyGroup>

Should work if you are referring to them in your WXS via

<Bundle Version="$(var.VersionMajorMinor).$(var.VersionBuild).$(var.VersionQFE)"
          UpgradeCode="$(var.BundleUpgradeCode)"
...

If you have a PreBuild event, use the MSBuild property instead of the var syntax.

<PreBuildEvent>"$(WIX)bin\heat.exe" dir "$(JavaDocBase)" -cg JavaDocs_JSP -gg -scom -sreg -sfrag -srd -dr INSTALLDIR -var var.JavaDocBase -out "$(ProjectDir)\JavaDocs_JSP_Fragment.wxs"</PreBuildEvent>


I am a bit confused why you opted not to use the HeatDirectoryTask.

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Jon Earle
Sent: Tuesday, March 08, 2016 1:15 PM
To: wix-users at lists.wixtoolset.org
Subject: [wix-users] Unable to correctly specify a variable for WiX within Visual Studio

Setup is Wix 3.10.2 and visual studio 2015. Working with a wix setup project and custom action project.
I want to create a fragment containing the javados for my project. I had read (http://weblogs.sqlteam.com/mladenp/archive/2010/02/11/WiX-3-Tutorial-SolutionProject-structure-and-Dev-resources.aspx) to set a pre-processor variable (or system variable). I opted to include the variable definition in the project. I tried the pre-processor var <DefineConstants>JavaDocBase=c:\javadocs</DefineConstants>
and just setting a normal variable:
<WixVariables>JavaDocBase=c:\javadocs</WixVariables>
Neither ended up working.
Pre-Build event:
<PropertyGroup><PreBuildEvent>"$(WIX)bin\heat.exe" dir "$(var.JavaDocBase)" -cg JavaDocs_JSP -gg -scom -sreg -sfrag -srd -dr INSTALLDIR -var var.JavaDocBase -out "$(ProjectDir)\JavaDocs_JSP_Fragment.wxs"</PreBuildEvent></PropertyGroup>
I always seem to receive the error:
Unhandled Exception:The expression """.JavaDocBase" cannot be evaluated. Method 'System.String.JavaDocBase' not found.
I have tried var.JavaDocBase, wix.JavaDocBase, env.JavaDocBase and Just JavaDocBase... while the last will allow the command to run, it doesn't put in the proper path so I am no further ahead.
Is it possible to replicate what is in that previously linked tutorial and if so, what have I done wrong?

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list