I having an issue with a WiX setup project I recently added to a Visual Studio 2012 (Ultimate, Update 4) web service project.
When the Candle utility processes the Product.wxs file, it's complaining that it can't find any of the var.<ProjectName>.* preprocessor variables. At first I thought it might be just .ProjectName, but none of the others, such as .ProjectPath, .Configuration, .TargetDir, etc. work, so clearly the whole <ProjectName>.* set is not being defined. I have used WiX without issue on several other projects, but those are VS 2010 projects, so I'm wondering if there's something special about VS 2012 w/r/t WiX that I'm missing? When I installed WiX, I already had VS 2010 and VS 2012 installed, so WiX project types were added without issue. The target project is called DMICoreService and the setup project is called DMICoreService_Setup. Below are the relevant fragments of the DMICoreService_Setup.csproj and Product.wxs files and build output that I think will be helpful: ---------------------------------------------------------- Project reference for target project: ---------------------------------------------------------- <ItemGroup> <ProjectReference Include="..\DMICoreService\DMICoreService.csproj"> <Name>DMICoreService</Name> <Project>{e793a8ce-2dc7-403d-a43c-566cc846b71c}</Project> <Private>True</Private> <DoNotHarvest>True</DoNotHarvest> <RefProjectOutputGroups> </RefProjectOutputGroups> <RefTargetDir>INSTALLFOLDER</RefTargetDir> <WebProject>True</WebProject> </ProjectReference> </ItemGroup> ---------------------------------------------------------- The following fragment is to get the web transforms to happen and pulled into the final build. It also defines some constants to be made available to WiX. This fragment has been used successfully, as-is, in several other projects (as noted above). ---------------------------------------------------------- <Target Name="BeforeBuild"> <PropertyGroup> <ProjectReferenceFilename>%(ProjectReference.Filename)</ProjectReferenceFilename> </PropertyGroup> <MSBuild Projects="%(ProjectReference.FullPath)" Targets="Package" Properties="Configuration=$(Configuration);Platform=AnyCPU" Condition="'%(ProjectReference.WebProject)'=='True'" /> <Copy SourceFiles="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\TransformWebConfig\transformed\web.config" DestinationFiles="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\web.config" Condition="'%(ProjectReference.WebProject)'=='True'"> </Copy> <ItemGroup> <LinkerBindInputPaths Include="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\" /> </ItemGroup> <HeatDirectory OutputFile="%(ProjectReference.Filename).wxs" Directory="%(ProjectReference.RootDir)%(ProjectReference.Directory)obj\$(Configuration)\Package\PackageTmp\" DirectoryRefId="INSTALLFOLDER" ComponentGroupName="$(ProjectReferenceFilename.Replace('-','_'))_Project" AutogenerateGuids="true" SuppressCom="true" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" ToolPath="$(WixToolPath)" Condition="'%(ProjectReference.WebProject)'=='True'" /> <GetAssemblyIdentity AssemblyFiles="%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\%(ProjectReference.Name).dll"> <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" /> </GetAssemblyIdentity> <PropertyGroup> <DefineConstants>AssemblyVersion=%(AssemblyVersion.Version)</DefineConstants> <DefineConstants Condition="'$(Configuration)'=='DemoRelease'">$(DefineConstants);VirtualDirSuffix=Demo</DefineConstants> <DefineConstants Condition="'$(Configuration)'!='DemoRelease'">$(DefineConstants);VirtualDirSuffix=</DefineConstants> </PropertyGroup> </Target> ---------------------------------------------------------- Product.wxs fragment (build dies when it gets to the <Product> element because it can't find the preprocessor variable): ---------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> <Product Id="*" Name="$(var.DMICoreService.ProjectName)-PID-839-($(var.Configuration))-v$(var.AssemblyVersion)" Language="1033" Version="$(var.AssemblyVersion)" Manufacturer="My Employer" UpgradeCode="7753fa5e-6c89-4af4-99bb-53653afb1d05"> ---------------------------------------------------------- Partial build output: ---------------------------------------------------------- 1> C:\Program Files (x86)\WiX Toolset v3.9\bin\Heat.exe dir C:\Users\TNewell\Documents\Projects\DMICoreServices\DMICoreService\obj\Debug\Package\PackageTmp\ -cg DMICoreService_Project -dr INSTALLFOLDER -scom -sreg -srd -ag -sfrag -out DMICoreService.wxs 1> C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe -v -dAssemblyVersion=1.0.0.0 -dVirtualDirSuffix= -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\\" -dSolutionDir=C:\Users\TNewell\Documents\Projects\DMICoreServices\ -dSolutionExt=.sln -dSolutionFileName=DMICoreService.sln -dSolutionName=DMICoreService -dSolutionPath=C:\Users\TNewell\Documents\Projects\DMICoreServices\DMICoreService.sln -dConfiguration=Debug -dOutDir=bin\Debug\ -dPlatform=x86 -dProjectDir=C:\Users\TNewell\Documents\Projects\DMICoreServices\DMICoreService_Setup\ -dProjectExt=.wixproj -dProjectFileName=DMICoreService_Setup.wixproj -dProjectName=DMICoreService_Setup -dProjectPath=C:\Users\TNewell\Documents\Projects\DMICoreServices\DMICoreService_Setup\DMICoreService_Setup.wixproj -dTargetDir=C:\Users\TNewell\Documents\Projects\DMICoreServices\DMICoreService_Setup\bin\Debug\ -dTargetExt=.msi -dTargetFileName=DMICoreService_Setup.msi -dTargetName=DMICoreService_Setup -dTarget Path=C:\Users\TNewell\Documents\Projects\DMICoreServices\DMICoreService_Setup\bin\Debug\DMICoreService_Setup.msi -out obj\Debug\ -arch x86 -ext "C:\Program Files (x86)\WiX Toolset v3.9\bin\\WixIIsExtension.dll" DMICoreService.wxs Product.wxs 1>C:\Users\TNewell\Documents\Projects\DMICoreServices\DMICoreService_Setup\Product.wxs(6,0): error CNDL0150: Undefined preprocessor variable '$(var.DMICoreService.ProjectName)'. 1>Done building project "DMICoreService_Setup.wixproj" -- FAILED. TIA Regards, -- Tim Newell Program Manager, IS Department of Biostatistics MD Anderson Cancer Center 713-792-8391 ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users