2012-03-01 3 views
10

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

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

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

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

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

ДОБАВЛЕНО:

Просто нашел обходной путь: use HEAT но мне интересно, если есть другой, рекомендуемый способ.

+1

Жара - это очень рекомендуемый способ. Это часть набора инструментов. Существует также внешний инструмент под названием «Парафин» (http://www.wintellect.com/CS/blogs/jrobbins/archive/tags/Paraffin/default.aspx), широко используемый в сообществе. Кстати, вы должны быть осторожны с автоматизацией. Если вы не планируете широко изменять содержимое этой папки, возможно, лучше создать файл WiX один раз и включить его в решение, а затем просто изменить его при изменении содержимого папки. Больше ручной работы, но больше контроля. Компромиссы, как обычно :) –

+0

Спасибо за ваш комментарий. Я думал, что не использовать Heat, потому что кажется [не рекомендуется использовать автоматически в вашем встроенном] (http://stackoverflow.com/a/5100898/220636). Но я проверю это. – nabulke

+0

«Не рекомендуется == быть осторожным» в этом случае. Если у вас много файлов, у вас мало выбора. Как я уже упоминал, в какой-то момент это все еще компромисс. –

ответ

13

Вы можете использовать задачу в файле 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> 

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

+1

Спасибо за пример - я попробую. – nabulke

+0

@nabulke Разве эта работа? – sirdank

+0

Пожалуйста, @nabulke, вы наша единственная надежда! Это работает?? – gakera

2

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

+0

Это должен быть комментарий. –