Рассмотрим следующий сценарий:
- Проект CommonLib
- Проект AExe
- Project BExe
Проект AExe установлен в %ProgramFiles%\AExe\bin
и BExe %ProgramFiles%\BExe\bin
, но оба развернуты с использованием одного и того же .MSI
Как я могу объявить CommonLib.dll как универсальный компонент, а затем повторно использоватьэто в AExe Directory[Ref]
и BExe Directory[Ref]
?
Что я хотел бы сделать:
<Fragment>
<Component Id="C.CommonLib.dll" Guid="*">
<File Id="Fi.CommonLib.dll" Source="<path>CommonLib.dll" KeyPath="yes"/>
</Component>
<Directory Id="ProgramFilesFolder">
<Directory Id="Di.AExe" Name="AExe">
<Directory Id="Di.AExeBin" Name="bin">
<ComponentRef Id="C.CommonLib.dll"/>
</Directory>
</Directory>
<Directory Id="Di.BExe" Name="BExe">
<Directory Id="Di.BExeBin" Name="bin">
<ComponentRef Id="C.CommonLib.dll"/>
</Directory>
</Directory>
</Directory>
</Fragment>
Но это не работает, потому что Directory
не позволяет Ref
как ребенок.Как бы вы это написали?
PS: я привожу пример с двумя проектами, но на самом деле гораздо больше проектов, которые используют более одной общей библиотеки, поэтому я и спрашиваю:)