如何使用WiX获取XNA内容文件?

如何使用WiX获取XNA内容文件?,xna,wix,build-automation,Xna,Wix,Build Automation,理想情况下,我会从项目规范本身获取输出,但heat.exe似乎不支持将contentproj文件作为项目类型,如果我传入游戏的主csproj,它也不会拾取内容 目前,我有一个预构建步骤,在输出文件夹上调用heat,但是(a)感觉脏了,(b)生成一堆文件标记,引用相对于输出文件夹的源路径,这样,当无法找到相对于WiX项目文件夹的源路径时,构建就会失败 我应该注意,我使用的是Voctive,我的项目布局如下所示: - Main solution - XNA "Metaproject" Folder

理想情况下,我会从项目规范本身获取输出,但heat.exe似乎不支持将
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相同,则会出现冲突