Включить все файлы в определенный каталог в пакет msi.

У меня есть каталог, содержащий несколько файлов, которые я хочу включить в сборку моего msi с помощью проекта Wix.

/database
/database/migration11.txt
/database/migration21.txt
/database/migration32.txt

Эти файлы часто меняются или добавляются новые, и я не хочу адаптировать мой файл Wix к каждому новому файлу миграции.

В основном я хочу сказать в моем файле wxs, чтобы он включал все файлы в базу данных каталога и после установки поместил их в каталог [INSTALLLOCATION]/database.

Любой способ достичь этого?

ДОБАВЛЕН:

Только что нашел это обходное решение: использовать HEAT, но мне любопытно, есть ли другой рекомендованный способ.

Ответ 1

Вы можете использовать задачу в файле wixproj:

<ItemGroup> 
... Your wxs files ...
<HarvestDirectory Include="$(variable)\YourDirectory\">
  <ComponentGroupName>CG_YOUR_GROUP</ComponentGroupName>
  <DirectoryRefId>DIR_REFERENCE</DirectoryRefId>
  <AutogenerateGuids>false</AutogenerateGuids>
  <GenerateGuidsNow>false</GenerateGuidsNow>
  <SuppressUniqueIds>true</SuppressUniqueIds>
  <SuppressCom>true</SuppressCom>
  <SuppressRegistry>true</SuppressRegistry>
  <SuppressRootDirectory>true</SuppressRootDirectory>
  <PreprocessorVariable>var.Property_Preprocessor</PreprocessorVariable>
</HarvestDirectory>
</ItemGroup>

Эта задача вызывает Heat во время сборки. Надеюсь, это вам поможет.

Ответ 2

Если кому-то все еще нужно это, здесь является образцом HarvestDirector с wixproj. Благодаря DavidEGrayson.