DirectoryRef在WiX中的目录中

时间:2013-12-17 18:17:58

标签: wix

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

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>

我的一个安装程序(Setup Project)以这种方式引用库:

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>

在INSTALLDIR目录中,我想将DirectoryRef添加到我的共享项目中声明的Directory_SharedFiles。我尝试使用DirectoryRef,但此标记不作为Directory的子项存在,我不清楚如何在共享项目中使用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 个答案:

答案 0 :(得分:1)

不要将DirectoryRef元素嵌套在Directory元素下。将其直接放在Fragment元素下。详细了解DirectoryRef

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