我有一个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
答案 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>