问题
I'm harvesting a directory for my Visual Studio solution.
It works on my local system so far probably because the project build order is being respected.
When I run the installer on a build server it finds the right directory but it has not been created at the time of building the setup file. It throws a HEAT5052
error saying The directory 'a:\b\c' could not be found
.
Is there any way to "wait" until or to execute the heat command after all project references are built?
回答1:
OK so I've spent hours to figure out how to fire Heat
AFTER all references are resloved. I only found solutions for the <PreBuildEvent>
and <PostBuildEvent>
using the Heat
command line and the BeforeBuild
and AfterBuild
targets.
So I found all kind of targets inside the wix2010.targets
file located in my
Program files (x86)\MSBuild\Microsoft\Wix\
folder. It contains a target called AfterResolveReferences
and it does exactly that. So here's my code I ended up with (in case someone is interested):
<Target Name="AfterResolveReferences">
<HeatDirectory
ToolPath="$(WixToolPath)"
OutputFile="Product.Binaries.wxs"
SuppressFragments="$(HarvestDirectorySuppressFragments)"
Transforms="Filter.xslt"
Directory="$(HarvestFolder)"
DirectoryRefId="MY_FOLDER"
ComponentGroupName="Binaries"
GenerateGuidsNow="true"
SuppressRootDirectory="true"
SuppressRegistry="true"
PreprocessorVariable="var.App.TargetDir">
</HeatDirectory>
</Target>
来源:https://stackoverflow.com/questions/34282907/wix-heat-pre-build-event-fires-too-early-on-build-server