如何使用WiX获取XNA内容文件?
理想情况下,我会从项目规范本身获取输出,但heat.exe似乎不支持将如何使用WiX获取XNA内容文件?,xna,wix,build-automation,Xna,Wix,Build Automation,理想情况下,我会从项目规范本身获取输出,但heat.exe似乎不支持将contentproj文件作为项目类型,如果我传入游戏的主csproj,它也不会拾取内容 目前,我有一个预构建步骤,在输出文件夹上调用heat,但是(a)感觉脏了,(b)生成一堆文件标记,引用相对于输出文件夹的源路径,这样,当无法找到相对于WiX项目文件夹的源路径时,构建就会失败 我应该注意,我使用的是Voctive,我的项目布局如下所示: - Main solution - XNA "Metaproject" Folder
contentproj
文件作为项目类型,如果我传入游戏的主csproj
,它也不会拾取内容
目前,我有一个预构建步骤,在输出文件夹上调用heat,但是(a)感觉脏了,(b)生成一堆文件标记,引用相对于输出文件夹的源路径,这样,当无法找到相对于WiX项目文件夹的源路径时,构建就会失败
我应该注意,我使用的是Voctive,我的项目布局如下所示:
- Main solution
- XNA "Metaproject" Folder
- Game
- bin/x86/Release (GameContent output appears here)
- GameContent
- WiX Project
我非常希望尽量减少指定路径的次数,例如“../../Game/Game/bin/x86/Release/Content”
,因为这样很容易出错,而且很难输入。在正确的方向上戳感谢 假设contentproj只是一组文件,您可以直接在创建安装程序的wixproj中添加收获:
<PropertyGroup>
<HarvestDirectoryNoLogo>true</HarvestDirectoryNoLogo>
<HarvestDirectorySuppressFragments>true</HarvestDirectorySuppressFragments>
<HarvestDirectorySuppressUniqueIds>true</HarvestDirectorySuppressUniqueIds>
<HarvestDirectoryAutogenerateGuids>true</HarvestDirectoryAutogenerateGuids>
</PropertyGroup>
<ItemGroup>
<HarvestDirectory Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "
Include="$(SolutionDir)\GameContent">
<DirectoryRefId>INSTALLDIR</DirectoryRefId>
<SuppressRootDirectory>true</SuppressRootDirectory>
<PreprocessorVariable>var.GameContentDir</PreprocessorVariable>
<ComponentGroupName>GameContent</ComponentGroupName>
</HarvestDirectory>
</ItemGroup>
将预处理器变量设置为msbuild属性:
<DefineConstants>GameContentDir=$(GameContentDir);</DefineConstants>
<GameContentDir>$(SolutionDir)\GameContent</GameContentDir>
$(SolutionDir)\GameContent
这意味着您可以根据构建配置来修改此选项。如果不需要修改路径,只需在
属性中设置一个静态值
然后,这将在每个构建的obj目录中生成一个wxs文件,假设您已经包含了ComponentGroupName,那么该文件将被包括在内。如果您在wixproj中包含了之前生成的组件,请将其删除,因为如果组件GroupName相同,则会出现冲突