Jak dodać cały katalog lub wyjście projektu do pakietu WiX

Postanowiliśmy przełączyć się z VS integrated setup na WiX.

Jednak obecnie używamy plików wyjściowych projektów jako danych wejściowych dla projektu instalacyjnego. Pozwala nam to łatwo dodawać pliki aplikacji do katalogu (dla obrazów, próbek i innych zasobów...) i te pliki są automatycznie dodawane do konfiguracji podczas budowania.

Nie mogłem znaleźć żadnej podobnej funkcji w WiX. WiX wydaje się wymagać jednego wpisu w katalogu i jednego wpisu w pliku dla każdego katalogu i Pliku. Wymagałoby to od nas zmiany źródła WiX za każdym razem, gdy dodawany jest plik, co moim zdaniem jest wygórowane, ponieważ mamy ich tak wiele.

Czy jest jakiś zintegrowany sposób na zrobienie tego z WiX, Czy muszę napisać własne zadanie, które stworzy źródło WiX przed wywołaniem candle?

Author: Christopher Painter, 2009-01-06

5 answers

Dla WiX 2.0 łój jest bardzo ograniczony; parafina i Malwa oferują dodatkową funkcjonalność. Dla WiX 3.0, heat oferuje taką samą funkcjonalność jak łój, trochę lepiej.

W moim przypadku użyłem źródła mallow i trochę go zmodyfikowałem, bo parafina potrzebuje wersji 3.5 .Net.

Możesz użyć Mallow

Lub parafinowe narzędzie do generowania fragmentów WiX: pierwsze kroki , the pain of WiX , lepszy łój, Parafina , Pobierz , parafina do WiX 3.0

 23
Author: sundar venugopal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-06 16:30:53

Używam ciepła.exe w WIX 3.5 tylko w tym celu. Kiedy ostatnio sprawdzałem, dokumentacja nie była aktualna w wydaniu 3.5, więc miej to na uwadze.

Oto przykład:

" $(WIX)bin\heat.exe " dir "$(SourcePath) " - cg MyFiles-gg-scom -sreg-sfrag-dr INSTALLDIR-out " $ (ProjectDir)Fragments\FileFragment.wxs" - var wix.InstallerPath

 19
Author: stankovski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-25 21:04:06

Projekt MapGuide Open Source wykorzystuje obecnie parafina 3.0 Johna Robbinsa, jak wskazywali inni.

Zasadniczo, po raz pierwszy dla danej wersji wydania, uruchomimy nasz skrypt instalatora z akcją" generate", która tworzy nowe .pliki WXS dla folderu źródłowego z określonymi opcjami dla każdego z nich.

Na kolejnych kompilacjach tej samej wersji wywoływana jest akcja "regen " w celu zapewnienia, żepliki wxs są aktualizowane o nowe pliki / katalogi, które zostały dodane.

Wierzę, że Heat v3 również teraz pozwala zrobić wiele (a może wszystko?) tego, jak pisze Brian Rogers . Nadal czuję się bardziej komfortowo z tym, jak parafina robi to wyraźniej, utrzymując statyczne GUID, ale obecne ciepło wygląda na dobrą opcję.

 3
Author: JasonBirch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-29 23:28:56

Po dalszych badaniach wydaje się, że istnieje dołączony plik binarny o nazwie łój.exe to właśnie robi. Tworzy fragment z katalogu poprzez rekurencyjne wyszukiwanie plików.

 2
Author: Coincoin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-05 22:31:42

W moim używaniu WIX, nigdy nie natknąłem się na funkcję, która pozwala dodać cały katalog plików na raz. Dzieje się tak, ponieważ istnieje wiele sposobów użycia danego pliku (system nie wie, czy później będziesz chciał odwołać się do określonego pliku w tym folderze, itp... i musi je znać), a także dlatego, że sama instalacja musi być dość specyficzna.

To nie powstrzymuje cię przed napisaniem własnego frontendu dla WIX, który wygeneruje plik XML WIX (lub jego fragmenty) po przetworzeniu zawartości struktur katalogowych. Tak działa jeden z systemów, których używamy w mojej pracy. To ten sam pomysł, co każde narzędzie generujące kod lub plik tekstowy. Wystarczy przejść przez drzewo i wygenerować odpowiedni tekst.

EDIT: w ten sposób możesz uznać WIX za " język niskiego poziomu "do definiowania konfiguracji, a twoje narzędzie za"język wysokiego poziomu". Jeśli potrzebujesz pomocy w napisaniu jednego, daj nam znać.

Również możesz mieć plik WIX generowane jako część procesu budowania poprzez dodanie tego narzędzia do niestandardowych kroków budowania w VStudio. W ten sposób nie masz "zapisanego pliku WIX", który ktoś buduje, system po prostu buduje go na końcu, automatycznie biorąc pod uwagę nowe pliki na etapie po kompilacji.

 1
Author: EdgarVerona,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-05 22:29:56