Ответ 1
Обратите внимание, что light
будет искать дополнительные SourceDir
для вашего файла, если вы добавите их в путь поиска с помощью -b
например.
light.exe -b Foo ...
Итак, вот базовая настройка. У меня есть существующий проект WIX, который собирает кучу отдельных фрагментов в более крупный MSI. Я пытаюсь изменить проект, чтобы вы могли выбрать отдельные части для установки. Программа, с которой я столкнулся, заключается в том, что, когда я запускаю нагрев меньших каталогов для создания отдельных компонентов, путь источника не является правильным. Я приведу пример, надеюсь, что это будет иметь больше смысла.
Итак, у меня есть базовая структура папок:
C:\ProjDir\Foo\Bar1
C:\ProjDir\Foo\BAR2
Я использовал команду, чтобы просто собрать C:\Foo (Heat.exe dir Foo -dr FOO_DIR_REF -out File.wxs), и теперь я изменил ее, чтобы собрать каждую отдельную папку Bar (Heat.exe dir Foo\Bar1 -dr BAR1_DIR_REF -out File1.wxs) и (Heat.exe dir Foo\Bar2 -dr BAR2_DIR_REF -out File2.wxs). Проблема, с которой я сталкиваюсь, заключается в том, что результат уборки выглядит следующим образом:
<Component Id="cmpblablabla" Guid="{stuff-here}">
<File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" />
</Component>
И при попытке построить msi он жалуется, потому что не может найти SourceDir\Bar1. В принципе, мне нужен способ сделать это примерно так:
<Component Id="cmpblablabla" Guid="{stuff-here}">
<File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" />
</Component>
Это кажется очень простой проблемой, и я уверен, что это легко сделать, но все поиски, которые я сделал, не принесли ничего полезного.
Обратите внимание, что light
будет искать дополнительные SourceDir
для вашего файла, если вы добавите их в путь поиска с помощью -b
например.
light.exe -b Foo ...
Это должно быть
<Component Id="cmpblablabla" Guid="{stuff-here}">
<File Id="filblabla" KeyPath="yes" Source="$(var.ProjectName.TargetPath)\Bar1\file.here" />
</Component>
Доступны различные доступные свойства
Ответ на ваш вопрос - все в тексте справки heat.exe.: -)
Чтобы закончить правильную сборку каталогов, укажите тепло в корневой каталог (Foo) и укажите в командной строке переключатель -srd
. Как говорится в тексте справки, это приведет к пропуску урожая корневого каталога, и вы, скорее всего, закончите тем, что вам нужно.
Для большей гибкости вы можете указать переключатель -var
, предоставляющий переменную WiX, которая должна заменить явный оператор SourceDir
. Опять же, просто запустите heat.exe
и просмотрите вывод - вы найдете достаточно информации и примеров.