倍數特徵之間的可重用組件考慮以下情形:維克斯 -
- 項目CommonLib
- CommonLib.dll
- 項目AExe
- CommonLib.dll
- AExe。 exe
- 項目BExe
- CommonLib.dll
- BExe.exe
項目AExe安裝在%ProgramFiles%\AExe\bin
和BExe %ProgramFiles%\BExe\bin
但兩者都使用相同的.MSI
部署如何將CommonLib.dll聲明爲通用組件,然後在AExe Directory[Ref]
和BExe中重用它0?
我想什麼做的事:
<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:我給的例子有2個項目,但在現實中有共享多個共同的lib更多的項目,這就是爲什麼我問的是:)
看起來是http://stackoverflow.com/questions/4941602/features-installed-to-different-locations-but-referencing-the-same -components – 2012-02-28 19:13:46