如何:引用另一个DirectorySearch元素

如何:引用另一个DirectorySearch元素

很多时候,当你需要在同一个文件夹搜索(locate)很多不同的文件或者子目录,并且分配不同的Property给他们。因为你不能定义同样的DirectorySearch元素多次,所以你必须使用DirectorySearchRef元素。引用另一个DirectorySearch元素的时候,你需要(给DirectorySearchRef元素)指定相同的(对应的)Id、Parent、Path属性,否则在你使用light.exe链接的时候,将收到unresolved symbol 错误。

第一步:定义一个DirectorySearch元素

你需要首先定义一个父DirectorySearch元素。这个元素是包含若干需要单独分配Property的不同文件或者子目录的父元素。

<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”文件。如果找到该文件,文件的完整路径将被赋值到公共Property“SHDOCVW”中。

第二步:定义DirectorySearchRef元素

为了在Media文件夹中搜索另外一个文件,你需要引用完全相同的Id、Parent Id、Path属性。因为Id为Media的DirectorySearch元素嵌套在Id为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元素,你可以在一个不同于第一步中的父元素中定义一个新的DirectorySearch。(意思是这样做不会冲突)

posted on 2010-10-26 16:40  nGn  阅读(1204)  评论(1编辑  收藏  举报