2009-07-30 4 views
8

Jestem całkiem nowy w WIX, więc wybacz mi, jeśli kompletnie brakuje mi tutaj łodzi, ale zastanawiałem się, czy możliwe było ponowne użycie komponentów (mwm, cab itd.) z pliku wxs bez światła ponownie je łącząc za każdym razem. Instalator, nad którym pracuję, ma kilka plików wykonywalnych, bibliotek DLL i plików konfiguracyjnych, które zmieniają się między poszczególnymi instalacjami. Pliki te stanowią około 5 megabajtów instalatora. Część, którą chcę ponownie wykorzystać, to pliki obrazów/map/bazy danych o wielkości ~ 350 megabajtów, które nie zmieniają się zbyt często, a których nie chcę koniecznie musieć kompilować/łączyć za każdym razem, gdy instalator jest zbudowany.Ponowne użycie komponentów WIX, aby przyspieszyć świecę/światło

Próbowałem już utworzyć plik mwm dla map, ale kiedy odwołuję się do nich w WXS, są one łączone za pomocą światła z głównym plikiem .msi. Próbowałem specifing non osadzony plik CAB do przechowywania map:

<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 
<Media Id="2" Cabinet="NewRiver.cab" EmbedCab="no" CompressionLevel="none" /> 
... 
<Merge Id="NewRiverDigMap" SourceFile="..\Output\NewRiverDigitalMaps.msm" Language="1033" DiskId="2" /> 

ale za każdym razem działa światło, plik CAB samodzielnym zostaje zregenerowany - co zajmuje trochę czasu.

Pomyślałem o stworzeniu pliku ZIP, który dostarczę wraz z msi i poprostu instalator wyciągnie z niego ekstrakt z suwaka, ale wydaje mi się, że jest to anty-wix. Chciałbym, aby pliki zostały usunięte, gdy nie są już potrzebne.

Czy są inne operacje podobne do wix, których mi brakuje? Czytałem o fragmentach, ale to chyba nie jest to, czego szukam.

Dzięki, David

Odpowiedz

12

Twoja intuicja jest absolutnie prowadzi cię w dobrym kierunku. Funkcja, której szukasz, nazywa się "cab-cache". Używasz go przez dodanie następujących do light.exe wiersza poleceń:

-reusecab -cc path\to\directory\for\cabinets 

Uwaga: Kompilacja (candle.exe) oraz połączenie (pierwsza połowa light.exe) powinno nastąpić bardzo szybko. Zwykle powolne jest wiązanie (drugie ma light.exe), ponieważ faktycznie dotyka wszystkich plików i buduje szafki. Budowa gabinetu jest najwolniejszą częścią, więc mam nadzieję, że taksówka w kabinie przyspieszy to wystarczająco dla ciebie.

P.S .: Jeśli kompilacja zajmuje dużo czasu, można utworzyć plik ".wixlib" z lit.exe. Mam więcej o .wixlibs tutaj: http://robmensching.com/blog/posts/2008/10/10/What-are-.wixlibs-and-why-would-you-use-them

+0

Eureka! Właśnie tego szukałem. Wydaje się nie działać, jeśli szafy NIE są osadzone - jakoś światło usuwa plik .cab, a następnie go szuka. Idealnie byłoby, gdyby działał z nie osadzonymi szafkami, ale z pewnością jest nieco szybszy niż wcześniej. –

+0

Hmm, to zachowanie brzmi jak błąd. Czy mógłbybyś otworzyć błąd (http://wix.sourceforge.net) ze szczegółami. Powinniśmy być w stanie naprawić w WiX v3.5. –

+0

Dziękuję za wspaniałą wskazówkę ([docs] (http://wixtoolset.org/documentation/manual/v3/howtos/general/optimizing_builds.html))! W moim przypadku skróciło to czas budowania pakietu msi od około 50 do zaledwie 10 (~ 200 plików/~ 100 MB). – CodeFox