2016-12-09 64 views
0

ComponentGroup/@目錄我有一個WiX的庫項目,它包含了與此類似使用一個變量在維克斯

<ComponentGroup Id="CG_Group1" Directory="INSTALLFOLDER" Source="$(var.FilesLocation)"> 
    <Component Id="C_Group1_file1.file"> 
    <File Name="Group1_file1.file" Id="FI_Group1_file1.file" /> 
    </Component> 
</ComponentGroup> 

該庫由多個WiX的安裝項目共享的幾個componentgroups,現在我想要的價值ComponentGroupDirectory屬性由引用它的安裝程序項目決定。 我在類似情況下所做的是在安裝項目,像這樣定義

<WixVariable Id="FOLDERIDTOUSE" Value="SOMEID"/> 

WiX的變量,並與

!(wix.FOLDERIDTOUSE) 

引用從維克斯庫中的變量做這行的Directory然而,當ComponentGroup的屬性我收到錯誤

ComponentGroup/@ Directory屬性的值'!(wix.FOLDERIDTOUSE)'不是al實例標識符。標識符可能包含ASCII字符A-Z,a-z,數字,下劃線(_)或句點(。)。每個標識符必須以字母或下劃線開頭。

CompontentGroup/@Directory不支持通過wix變量注入嗎?

是否有另一種方法來實現我想要做的?

編輯: 這就是我想要做的事:

在威克斯庫:

<ComponentGroup Id="CG_Group1" Directory="!(wix.FOLDERIDTOUSE)" Source="$(var.FilesLocation)"> 
    <Component Id="C_Group1_file1.file"> 
    <File Name="Group1_file1.file" Id="FI_Group1_file1.file" /> 
    </Component> 
</ComponentGroup> 

在安裝項目(S):

<Directory Id="FOLDERSPECIFICTOTHISPROJECT" Name="MyFolder/> 
<WixVariable Id="FOLDERIDTOUSE" Value="FOLDERSPECIFICTOTHISPROJECT"/> 

回答

0

目錄必須定義使用<Directory>標記,因爲它們被放入msi的目錄表中。我相信您可以使用具有相同ID的Directory和Property,因爲它們被視爲不同的事物。

您應該可以在構建過程中使用wix變量。只需要使用類似的東西

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALLFOLDER" Id="!(wix.FOLDERTOUSE)" /> 
</Directory> 

... 

<ComponentGroup Id="CG_Group1" Directory="INSTALLFOLDER"> 
    ... 
</ComponentGroup> 
+0

''元素在多個安裝程序項目中定義。我不需要爲他們使用一個變量。然而,問題中的元素在庫中定義了一次,並且在它的ComponentGroup/@ Directory屬性中,我試圖使用該變量。 –