组件组中的Wix子目录

时间:2019-02-06 15:59:40

标签: wix

我想为我的ComponentGroups预先定义子文件夹。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <?include Constants.wxi?>
  <Fragment>

    <ComponentGroup Id="CG.MYLIBRARY" Directory="INSTALLFOLDER">
      <Component Id="C.MYLIBRARY" Guid="*">
        <File Id="MYLIBRARY" Source="$(var.MyProject.TargetPath)" KeyPath="yes" Checksum="yes" />
      </Component>


      <ComponentGroupRef Id="CG.DependencyLibrary" />

      <!-- Resources -->

      <Component Directory="Configuration">
        <File Id="MyFile" Source="$(var.MyProject.TargetPath)\Configuration\MyFile" />
      </Component>

    </ComponentGroup>
  </Fragment>
</Wix>

所以我想在我的TopDirectory中访问MyLibrary.dll-哪里有“ INSTALLFOLDER”, 但我想自动MyFile.xml在名为Configuration的子目录中。

#InstallFolder
-> MyLibrary.dll
-> DependencyLibrary.dll
#InstallFolder\Configuration
--> MyFile.xml

但是当我这样尝试时-我得到了:

  

在以下情况下无法指定Component / @ Directory属性:   Component元素嵌套在Directory元素下面。如果这   组件是ComponentGroup的成员,其中   设置ComponentGroup / @ Directory,然后设置Component / @ Directory   属性应删除。

当我只希望在ComponentGroup中给定目录下的子文件夹时,为什么必须删除Directory元素?

1 个答案:

答案 0 :(得分:1)

我不使用此构造(ComponentGroup),但是会编译:

<...>

<Fragment>
 <Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="SetupProject4">
      <Directory Id="Configuration" />
    </Directory>
  </Directory>
 </Directory>
</Fragment>

<...>

<Fragment>
 <ComponentGroup Id="ProductComponents">      
    <Component Id="C.MYLIBRARY" Directory="INSTALLFOLDER">
       <File Source="1.txt" />
    </Component>
    <Component Directory="Configuration">
       <File Source="2.txt" />
    </Component>
 </ComponentGroup>
</Fragment>