考虑我有一个名为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>
有办法做到这一点吗?
答案 0 :(得分:1)
不要将DirectoryRef
元素嵌套在Directory
元素下。将其直接放在Fragment
元素下。详细了解DirectoryRef。
在共享WiX片段中而不是在每个产品中单独构建目录结构。