Подтвердить что ты не робот

Wix Heat output не ссылается на каталог, как я хочу

Итак, вот базовая настройка. У меня есть существующий проект 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>

Это кажется очень простой проблемой, и я уверен, что это легко сделать, но все поиски, которые я сделал, не принесли ничего полезного.

4b9b3361

Ответ 1

Обратите внимание, что light будет искать дополнительные SourceDir для вашего файла, если вы добавите их в путь поиска с помощью -b

например.

light.exe -b Foo ...

Ответ 2

Это должно быть

<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="$(var.ProjectName.TargetPath)\Bar1\file.here" />
</Component>

Доступны различные доступные свойства

  • $(var.ProjectName.TargetPath)
  • $(var.ProjectName.ProjectDir)

Ответ 3

Ответ на ваш вопрос - все в тексте справки heat.exe.: -)

Чтобы закончить правильную сборку каталогов, укажите тепло в корневой каталог (Foo) и укажите в командной строке переключатель -srd. Как говорится в тексте справки, это приведет к пропуску урожая корневого каталога, и вы, скорее всего, закончите тем, что вам нужно.

Для большей гибкости вы можете указать переключатель -var, предоставляющий переменную WiX, которая должна заменить явный оператор SourceDir. Опять же, просто запустите heat.exe и просмотрите вывод - вы найдете достаточно информации и примеров.