msbuild wix heat

msbuild - WiX Heat: el evento de precompilación se dispara demasiado temprano en el servidor de compilación



(1)

Estoy cosechando un directorio para mi solución de Visual Studio.

Hasta ahora, funciona en mi sistema local porque se está respetando el orden de compilación del proyecto.

Cuando ejecuto el instalador en un servidor de compilación, encuentra el directorio correcto pero no se ha creado en el momento de compilar el archivo de instalación. HEAT5052 un error HEAT5052 dice The directory ''a:/b/c'' could not be found .

¿Hay alguna manera de "esperar" hasta o ejecutar el comando de calefacción después de que se hayan construido todas las referencias del proyecto?


OK, así que me he pasado horas para descubrir cómo disparar el Heat DESPUÉS de que todas las referencias hayan sido resueltas. Solo encontré soluciones para <PreBuildEvent> y <PostBuildEvent> usando la línea de comando Heat y los objetivos BeforeBuild y AfterBuild .

Así que encontré todo tipo de objetivos dentro del archivo wix2010.targets ubicado en mi carpeta Program files (x86)/MSBuild/Microsoft/Wix/ . Contiene un objetivo llamado AfterResolveReferences y hace exactamente eso. Así que aquí está mi código con el que terminé (en caso de que alguien esté interesado):

<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>