How To: 別の DirectorySearch エレメントを参照する

同じディレクトリーの下に異なったファイルやサブディレクトリーを置き、それぞれに別々の プロパティを割り当てる必要がある時が あるかもしれません。2回以上同じ DirectorySearch エレメントを定義できないので、DirectorySearchRef エレメントを使わなければなりません。 別の DirectorySearch エレメントを参照するには、同じ Id、Parent Id、Path アトリビュート値を 指定しなければならず、さもなければ light.exe でリンクしている時に 未解決のシンボルエラーに なります。

Step 1: DirectorySearch エレメントを定義する

まず 親 DirectorySearch エレメントを定義する必要があります。これは、別々のプロパティを割り 当てるだろう 異なったファイルやサブディレクトリーを含んでいると考えられます。

<Property Id="SHDOCVW">
    <DirectorySearch Id="WinDir" Path="[WindowsFolder]">
        <DirectorySearch Id="Media" Path="Media">
            <FileSearch Id="Chimes" Name="chimes.wav" />
        </DirectorySearch>
    </DirectorySearch>
</Property>

これは、Windows 中の Media ディレクトリーの下で "chimes.wav" ファイルをサーチする でしょう。もしファイルが見つかれば、フルパスが パブリックプロパティ "SHDOCVW" に 割り当てられます。

Step 2: DirectorySearchRef エレメントを定義する

Media ディレクトリー中で別のファイルをサーチするには、すべて 同じ Id、Parent Id、Path アトリビュートを参照する必要があります。Media DirectorySearch エレメントは WinDir DirectorySearch エレメントの下に入れ子にされているので、その Parent アトリビュートは自動的 に 親 DirectorySearch エレメントの Id アトリビュート値を割り当てられています。したがって それが、DirectorySearchRef エレメントの Parent アトリビュート値に指定しなければならない物 です。

<Property Id="USER32">
    <DirectorySearchRef Id="Media" Parent="WinDir" Path="Media">
        <FileSearch Id="Chord" Name="chord.wav" />
    </DirectorySearchRef>
</Property>

もし Id Media を使用する別の DirectorySearch エレメントを参照したいけれど それが異なる親パス の下にあるなら、Step 1 とは違った親の下に 新しい DirectorySearch エレメントを定義しなければ ならないでしょう。