2013-12-17 89 views
0

考虑我有一个名为MyLib.wixproj的WiX设置库项目,其中包含与不同安装程序共享的两个文件。该项目具有以下(简化)结构:WiX目录中的DirectoryRef

MyLib.wxs:

<Wix> 
    <Fragment> 

    <Feature Id="MySharedFeature" ...> 
     <ComponentGroupRef Id="MySharedCompGroup" /> 
    </Feature> 

    <ComponentGroup Id="MySharedCompGroup" Directory="Directory_SharedFiles"> 
     <Component Id="SharedCompA" Guid="*"> 
     <File Id="SharedFileA Source="$(var.Source)fileA.txt" KeyPath="yes" /> 
     </Component> 
     <Component Id="SharedCompB" Guid="*"> 
     <File Id="SharedFileB Source="$(var.Source)fileB.txt" KeyPath="yes" /> 
     </Component> 
    </ComponentGroup> 

    <Directory Id="Directory_SharedFiles" Name="SharedFiles" /> 

    </Fragment> 
</Wix> 

我的一个安装(安装项目)的引用库是这样的:

Product.wxs:

<Wix> 
    <Product> 

    <FeatureRef Id="MySharedFeature" /> 

    </Product> 
</Wix> 

Directories.wxs:

<Wix> 
    <Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="INSTALLDIR" Name="MyApp"> 

      <!-- Here I want to add a reference to Directory_SharedFiles. --> 

      <Directory Id="OtherFilesNotShared" Name="MoreFiles"> 
      </Directory> 

     <Directory> 
     </Directory> 
    </Directory> 
    </Fragment> 
<Wix> 

里面我想一个DirectoryRef添加到Directory_SharedFiles的INSTALLDIR目录,在我的共享项目申报。我试着用DirectoryRef但这个标签不存在作为目录的孩子,这是我不清楚如何使用Directory Id="TARGETDIR"共享项目中,像这样:

MyLib.wxs:

<!-- This code does not compile! --> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="Directory_SharedFiles" Name="SharedFiles" /> 
</Directory> 

</Fragment></Wix> 

有没有办法做到这一点?

回答

1

请勿将DirectoryRef元素嵌套在Directory元素下。将它直接放在Fragment元素下。阅读更多关于DirectoryRef

在共享的WiX片段中而不是在每个产品中分别构建目录结构。

+0

我将目录结构移动到MyLib.wxs中,如问题末尾所示,但它不起作用。你能否给我一个实际的代码片段来解决它? – Marlos

+0

在你的代码中,目录Directory_SharedFiles在目标机器上的位置并不清楚。共享文件位于何处?如果在Program Files中,则需要将其嵌套在程序文件下。 – BryanJ