我想为我的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
元素?
答案 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>