WiX未定义的预处理器variables
我开始使用WiX来执行自动构build来创build我的c#项目的msi,并且遇到错误“未定义的预处理器variables”$(var.MyProject.TargetDir)'“
我正在使用最新的WiX v3.0.5419。 在我的wxs文件里,我试图使用这个网页上列出的预处理器variables( http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor- variables.aspx )
<Component Id="MyId" Guid="MyGuid"> <File Id="MyId" Name="MyName" KeyPath="yes" Source="$(var.MyProject.TargetDir)\MyName.dll" /> </Component>
我已经将MyProject的参考添加到.wixproj,如果我在记事本中打开它,我可以看到参考。
<ItemGroup> <ProjectReference Include="..\MyProject.csproj"> <Name>MyProject</Name> <Project>{guid}</Project> <Private>True</Private> </ProjectReference> </ItemGroup>
这是我用来创buildmsi的nant构build脚本。 也许是因为.wixproj知道在构build中没有使用的项目引用?
<exec basedir="${tools.wix}" managed="true" program="candle.exe"> <arg line='-out "${tools.wix.objfile}"' /> <arg value="../MySetup.wxs" /> </exec>
任何人都可以启发我呢?
正如你已经说过的,你的nant构build脚本完全不使用wixproj
文件。
您在这里混合两种不同的方式来build立wix设置:
-
您可以直接使用
candle.exe
和light.exe
命令行工具。 这会忽略.wixproj
文件。 这就是你在你的nant构build脚本中所做的。 要传递像$(var.MyProject.TargetDir)
这样的预处理器variables的值,请使用像-dMyProject.TargetDir=c:\foo
这样的选项。 -
您可以使用votive编写.wixproj文件(wix的Visual Studio附加组件)。 像所有的Visual Studio项目文件一样,wixproj文件实际上是一个可以用
msbuild.exe
构build的msbuild文件。 像$(var.MyProject.TargetDir)
这样的variables是由msbuild任务自动设置的,如果存在正确的项目引用,那么就会构buildwix设置。
我build议你用<msbuild>
nant任务构buildwixproj文件。 这可以确保你的nant构build与从Visual Studio手动构build设置时相同。