2

プロジェクト スペック自体から出力を取得するのが理想的ですが、heat.exe はcontentprojファイルをプロジェクト タイプとしてサポートしていないようで、ゲームの main を渡すとコンテンツを取得しませんcsproj

現在、出力フォルダーで heat を呼び出すビルド前のステップがありますが、(a) 汚いと感じ、(b)File出力フォルダーに関連するソース パスを参照するタグの束を生成するため、ビルドが失敗する可能性があります。 WiX プロジェクトのフォルダーを基準にしてそれらを見つけることはできません。

私は Votive を使用しており、プロジェクトのレイアウトは次のようになっていることに注意してください。

- Main solution
 - XNA "Metaproject" Folder
  - Game
   - bin/x86/Release (GameContent output appears here)
  - GameContent
 - WiX Project

のようなパスを指定しなければならない回数を最小限に抑えたいと思います"../../Game/Game/bin/x86/Release/Content"。これはエラーが発生しやすく、入力するのが面倒だからです。正しい方向に進んでいただければ幸いです。

4

1 に答える 1

2

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>

これをwixprojファイルに手動で追加する必要があります。複数のディレクトリが必要な場合は、ディレクトリごとにHarvestDirectoryを繰り返すことができます。

var.GameContentDirプリプロセッサ変数を設定するには、DefineConstantsプロパティを編集します。

<DefineConstants>GameContentDir=$(GameContentDir);</DefineConstants>

これにより、プリプロセッサ変数がmsbuildプロパティに設定されます。

<GameContentDir>$(SolutionDir)\GameContent</GameContentDir> 

つまり、ビルド構成に応じてこれを変更できます。パスを変更する必要がない場合は、<DefineConstants>プロパティに静的な値を設定するだけです。

これにより、各ビルドのobjディレクトリにwxsファイルが生成されます。このファイルは、ComponentGroupNameが含まれていると想定して含まれます。以前に生成したものをwixprojに含めた場合は、ComponentGroupNameが同じであると競合が発生するため、それを削除してください。

于 2012-07-02T16:18:07.350 に答える