2013-12-17 3 views
0

У меня есть проект библиотеки 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> 

Есть ли способ сделать это?

ответ

1

Не влагайте элемент DirectoryRef под элемент Directory. Поместите его непосредственно под элемент Fragment. Подробнее о DirectoryRef.

Создайте структуру каталогов в совместно используемом фрагменте WiX, а не в каждом продукте отдельно.

+0

Я переместил структуру каталогов на MyLib.wxs, как показано в конце вопроса, но это не сработало. Не могли бы вы предоставить мне фактический фрагмент кода для его решения? – Marlos

+0

В коде, который у вас есть, неясно, где находится каталог Directory_SharedFiles на целевой машине. Где находятся общие файлы? Если в Program Files вам нужно вложить его в файлы программы. – BryanJ

Смежные вопросы