WiX undefined preprocessor variable
Solution 1:
As you already remarked, your nant build script is not using the wixproj
file at all.
You are mixing two different ways to build a wix setup here:
You can use the
candle.exe
andlight.exe
command line tools directly. This ignores the.wixproj
file. This is what you are doing in your nant build script. To pass values for preprocessor variables like$(var.MyProject.TargetDir)
, use options like-dMyProject.TargetDir=c:\foo
.You can author a .wixproj file with votive (the visual studio add-on for wix). Like all visual studio project files, a wixproj file is actually a msbuild file which can be build with
msbuild.exe
. Variables like$(var.MyProject.TargetDir)
are automatically set by the msbuild tasks for building wix setups if the correct project reference exists.
I recommend you build the wixproj file with the <msbuild>
nant task. This ensures that your nant build does the same as when you build the setup manually from visual studio.