У меня есть проект библиотеки WiX Setup с именем MyLib.wixproj с 2 файлами, которые совместно используются разными установщиками. Этот проект имеет следующую (упрощенную) структуру:DirectoryRef внутри каталога в WiX
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 Id="TARGETDIR"
внутри общего проекта, как это:
MyLib.wxs:
<!-- This code does not compile! -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="Directory_SharedFiles" Name="SharedFiles" />
</Directory>
</Fragment></Wix>
Есть ли способ сделать это?
Я переместил структуру каталогов на MyLib.wxs, как показано в конце вопроса, но это не сработало. Не могли бы вы предоставить мне фактический фрагмент кода для его решения? – Marlos
В коде, который у вас есть, неясно, где находится каталог Directory_SharedFiles на целевой машине. Где находятся общие файлы? Если в Program Files вам нужно вложить его в файлы программы. – BryanJ