WiX Heat:预构建事件在构建服务器上过早触发

8 msbuild wix heat

我正在为Visual Studio解决方案收集一个目录.

到目前为止,它可以在我的本地系统上运行,可能是因为项目构建顺序得到了尊重.

当我在构建服务器上运行安装程序时,它会找到正确的目录,但在构建安装文件时尚未创建.它抛出一个HEAT5052错误说The directory 'a:\b\c' could not be found.

在构建所有项目引用之后,有没有办法"等待"直到或执行heat命令?

小智 10

好的,所以我花了几个小时来弄清楚如何在Heat所有参考文献被重新开发后开火.我只找到了解决方案<PreBuildEvent>,并<PostBuildEvent>使用Heat与命令行BeforeBuildAfterBuild目标.

所以我在wix2010.targets文件Program files (x86)\MSBuild\Microsoft\Wix\夹中找到了文件中的 所有类型的目标.它包含一个被调用的目标AfterResolveReferences,它就是这样做的.所以这是我最终得到的代码(以防有人感兴趣):

<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>
Run Code Online (Sandbox Code Playgroud)

  • 这次真是万分感谢。你知道在试图解决这个问题后,我怎样才能把头发扯回头上吗? (5认同)