Письмо "на деревню дедушке", но мало ли...
В составе WiX проекта присутствует, (упрощено для наглядности) такой фрагмент кода:
<?define var1="$(var.R172.TargetPath)" ?>
<?define var2="$(var.R172.TargetDir)" ?>
Я бы хотел вместо жёсткого указания "R172" извлекать эту часть текста из переменной. Т.е. как-то так:
<?define info = R172 ?>
<?define var1="$(var.info.TargetPath)" ?>
<?define var2="$(var.info.TargetDir)" ?>
Т.е. мне бы хотелось, чтобы препроцессор обозначенный выше код преобразовал к тому виду, который был показан в первом фрагменте кода. Однако я получаю ошибку:
Undefined preprocessor variable $(var.info.TargetPath).
Такой вариант тоже не работает:
<?define var1="$(var.$(var.info).TargetPath)" ?>
<?define var2="$(var.$(var.info).TargetDir)" ?>
Ок, тогда я пытаюсь провернуть это через конструкцию
foreach:
<?foreach info in R172?>
<?define var1="$(var.info.TargetPath)" ?>
<?define var2="$(var.info.TargetDir)" ?>
<?endforeach?>
или
<?foreach info in R172?>
<?define var1="$(var.$(var.info).TargetPath)" ?>
<?define var2="$(var.$(var.info).TargetDir)" ?>
<?endforeach?>
Однако в результате по прежнему получаю ту же ошибку...
Т.е. применительно к написанию расширений под AutoCAD это можно было бы использовать, например, так:
<!-- The list of the names of referensed projects -->
<?define ACAD_VERSIONS=R172;R182;R190?>
<?foreach ACAD in ACAD_VERSIONS?>
<Feature Id="Feature.$(var.ACAD)" Title="$(var.ACAD)" Level="1">
<Component Id="cmp$(var.ACAD)" Guid="*" Directory="INSTALLFOLDER">
<File Id="extension.$(var.ACAD).dll" Source="$(var.$(var.ACAD).TargetPath)" KeyPath="yes"/>
</Component>
...
</Feature>
<?endforeach?>
Есть идеи на тему того, как можно было бы реализовать обозначенную в теме "хотелку"?