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