它是一个WPF应用程序,带有Wix Installer。
我有resourceses
文件夹,我想在安装程序中包含这些文件以放在可执行文件旁边。我解决了使用resources.wxs
工具生成resources
文件,其中包含有关heat
文件夹下文件的必要信息。我设法包含在主wxs
文件中。出于这个原因,我修改了.wixproj
文件,添加了一个之前的构建目标操作来生成wx并将其包含在主wxs
中。
关注:.wixproj是一种隐藏的东西,你无法从visual studio修改,比如添加一个before build动作(pre build action是另一个故事)
问题:如何将之前的构建操作提取到单独的文件中?
.wixproj
中的之前构建操作:
<Target Name='BeforeBuild'>
<Exec Command='"%WIX%bin\heat" dir $(SolutionDir)resources -dr ResourcesDir -var var.ResourcesDir -cg ResourceFilesGroup -gg -g1 -sfrag -srd -out $(ProjectDir)Resources.wxs' />
<ItemGroup>
<Compile Include='$(ProjectDir)Resources.wxs' />
</ItemGroup>
答案 0 :(得分:2)
您可以将其提取到单独的文件中 - 大多数项目文件类型已经这样做了。这就是他们为一种类型的所有项目提供共同目标的方式。 .wixproj有这个:
<Import Project="$(WixVersionTargetsPath)" />
要扩充自己,只需:
创建一个XML文件,如:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name='BeforeBuild'>
<!-- tasks -->
</Target>
</Project>
在Project元素中添加一个Import元素并引用该文件:
<Import Project="custom.targets" />
如果此类文件主要包含Target元素,则其约定是文件扩展名为“.targets”。
但Visual Studio有两个缺点:
作为直接调用热量的替代方法,您可能希望查看WiX提供的Harvest *目标。注意:正如文档所说,你不直接调用它们(它们已经被Build目标调用);您只需将项目添加到他们处理的ItemGroup并设置他们使用的属性。