2013-03-12 38 views
2

我創建了一個WixLib項目和解決方案,其中包含一個片段,指向一組DLLS,我希望將其包含在多個項目中。嘗試更改引用解決方案中的WixLib預處理器變量

但是,當我從其他解決方案引用此wixlib時,dll所在的目錄的預處理器值將與wixlib一起提供。我想重寫此值或更新它。

我Wixlib看起來是這樣的:

<Fragment> 
    <ComponentGroup Id="CG.FarPointComponents"> 
     <Component Id="cmpBBC3777DD58F5E2AE4704D66EF87C105" Directory="INSTALLDIR" 
       Guid="6CB60019-D122-41F6-8009-C41B07BCE5C3"> 
     <File Id="filC126C8C2BFE502E045C17A812B8A907D" KeyPath="yes" 
       Source="$(var.FarPointDir)\FarPoint.CalcEngine.dll" /> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

我想指定的其它解決方案,該var.FarPointDir另一個目錄應該怎麼辦?我使用WiX的3.6

回答

2

有幾個選項:

  1. 創建一個binary .wixlib - 使用-bf開關lit.exe將文件嵌入到.wixlib。這樣.wixlib完全獨立,儘管它會更大。

  2. 使用bind paths - 綁定路徑就像搜索路徑,但是要找到需要在包中結束的文件。如果你使File/@Source相對(不要從X:\\開始),那麼將搜索未命名的綁定路徑。使用-bp命令行開關指定綁定路徑爲light.exe。或者可以使用指定的綁定路徑,它們看起來就像這樣:

    <File Source='!(bindpath.Name)\FarPoint.CalcEngine.dll' /> 
    

    同樣,-bp交換機可以創建名爲綁定路徑。

  3. 使用bind variable - 使用在「綁定時間」解析的變量,而不是使用預處理器變量(在「compile」之前解析)。您可以引用一個綁定變量,如:!(wix.Var)。可以在命令行上將其設置爲light.exe,或者可以使用WixVariable元素將其設置爲代碼。

我使用選項#1至.wixlibs分發給其他人(是自包含),並選擇#2,如果它只是我的東西(二進制.wixlibs將放緩構建一個位)。