2012-03-01 15 views
10

Mam katalog zawierający wiele plików, które chcę uwzględnić w mojej kompilacji pakietu msi przez projekt Wix.Dołącz wszystkie pliki w określonym katalogu do pakietu msi

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

Pliki te często się zmieniają lub są nowe, dodane, i nie chcę, aby dostosować mój plik Wix z każdym nowym pliku migracji.

Zasadniczo chcę powiedzieć w moim wxs pliku zawierać wszystkie pliki w bazie danych katalogu i po instalacji umieścić je w katalogu [INSTALLLOCATION]/database.

Jakikolwiek sposób to osiągnąć?

DODANO:

Wystarczy znaleźć tego obejścia: use HEAT ale jestem ciekaw, czy istnieje inny, zalecany sposób.

+1

Ciepło jest zalecanym sposobem. Jest częścią zestawu narzędzi. Istnieje również narzędzie zewnętrzne o nazwie Paraffin (http://www.wintellect.com/CS/blogs/jrobbins/archive/tags/Paraffin/default.aspx) szeroko stosowane w społeczności. BTW, powinieneś być ostrożny z automatyzacją. Jeśli nie planujesz zbyt dużej zmiany zawartości tego folderu, lepiej jest raz wygenerować plik WiX i dołączyć go do rozwiązania, a później po prostu zmodyfikować go, gdy zmieni się zawartość folderu. Więcej pracy ręcznej, ale więcej kontroli. Kompromisy, jak zwykle :) –

+0

Dzięki za komentarz. Myślałem, że nie używam Heat, ponieważ wydaje się [nie jest zalecane, aby używać go automatycznie w swoim budowaniu] (http://stackoverflow.com/a/5100898/220636). Ale sprawdzę to. – nabulke

+0

"Nie zalecane == uważaj" w tym przypadku. Jeśli masz dużo plików, nie masz wielkiego wyboru. Jak już wspomniałem, w pewnym momencie wciąż jest to kompromisem. –

Odpowiedz

13

Można użyć zadania w pliku 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> 

To zadanie wymaga ciepła podczas kompilacji. Mam nadzieję, że to ci pomoże.

+1

Dzięki za przykład - spróbuję. – nabulke

+0

@nabulke Czy to działa? – sirdank

+0

Proszę @nabulke jesteś naszą jedyną nadzieją! Czy to działa?? – gakera

2

Jeśli ktoś nadal potrzebuje tego, here jest próbką HarvestDirector z wixproj. Dzięki DavidEGrayson.

+0

To powinien być komentarz. –

Powiązane problemy