在WiX中使用ComponentGroup / @ Directory的变量

时间:2016-12-09 14:18:30

标签: wix

我有一个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安装程序项目共享,现在我希望Directory的{​​{1}}属性的值由引用它的安装程序项目决定。 我在类似情况下所做的是在安装程序项目中定义WiX变量,如此

ComponentGroup

并使用

引用wix库中的变量
<WixVariable Id="FOLDERIDTOUSE" Value="SOMEID"/>

但是,对!(wix.FOLDERIDTOUSE) 的{​​{1}}属性执行此操作时,我收到错误

  

ComponentGroup / @Directory属性的值'!(wix.FOLDERIDTOUSE)'不是合法标识符。标识符可以包含ASCII字符A-Z,a-z,数字,下划线(_)或句点(。)。每个标识符必须以字母或下划线开头。

Directory是否支持通过wix变量注入?

还有另一种方法可以实现我想要做的事情吗?

编辑: 这就是我想要做的事情:

在wix库中:

ComponentGroup

在安装程序项目中:

CompontentGroup/@Directory

1 个答案:

答案 0 :(得分:0)

必须使用<Directory>标记定义目录,因为它们会被放入msi的Directory表中。我相信您可以使用具有相同ID的目录和属性,因为它们被视为不同的东西。

您应该能够在构建期间使用wix变量。只需要使用这样的东西

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

...

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