2009-07-30 12 views
8

Sono abbastanza nuovo a Wix, così mi perdoni se mi manca completamente la barca qui, ma mi chiedevo se fosse possibile riutilizzare i componenti (MWM, taxi, ecc) dall'interno di un file wxs senza che la luce si ricolleghi ogni volta. L'installer su cui sto lavorando ha diversi eseguibili, dll e file di configurazione che tendono a cambiare tra ogni installazione. Questi file equivalgono a circa 5 megavali di installazione. La parte che voglio riutilizzare è il ~ 350 megavaro di file immagine/mappa/database che non cambiano molto spesso che non voglio necessariamente compilare/collegare ogni volta che viene creato il programma di installazione.Riutilizzo componenti WIX per accelerare candela/luce

Ho cercato di creare un file di MWM per le mappe, ma quando li ho di riferimento all'interno del WXS, ottengono collegati tramite la luce nel file .msi principale. Ho provato specificando un file CAB non incorporato per contenere le mappe:

<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" /> 

ma ogni volta che corre la luce, il file CAB stand-alone viene rigenerato - che prende un po '.

ho pensato di solo la creazione di un file ZIP di consegnare insieme al msi e hanno il programma di installazione appena dare il via alla estratto zip, ma che sembra anti-Wix a me. Mi piacerebbe avere i file da rimuovere quando non sono più necessari.

Ci sono altri Wix operazioni analoghe che mi manca? Ho letto di frammenti, ma non sembra quello che sto cercando.

Grazie, David

risposta

12

tua intuizione è assolutamente che portano nella direzione giusta. La funzione che stai cercando si chiama "cab-cache". Lo si utilizza aggiungendo quanto segue al light.exe della riga di comando:

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

Nota: Compilazione (candle.exe) e il collegamento (prima metà del light.exe) dovrebbe avvenire molto rapidamente. Quello che di solito è lento è il binding (secondo have di light.exe) perché in realtà tocca tutti i file e crea i cabinet. La costruzione del gabinetto è la parte più lenta, quindi spero che la cache della cabina acceleri le cose a sufficienza per te.

P.S .: Se compilazione sta prendendo molto tempo è possibile creare ".wixlib" con lit.exe. Ho più circa .wixlibs qui: http://robmensching.com/blog/posts/2008/10/10/What-are-.wixlibs-and-why-would-you-use-them

+0

Eureka! Proprio quello che stavo cercando. Non sembra funzionare se i cabinet NON sono incorporati - in qualche modo la luce cancella il file .cab e poi va a cercarlo. Idealmente, mi piacerebbe che funzionasse con cabinet non integrati, ma sicuramente è un po 'più veloce di prima. –

+0

Hmm, questo comportamento sembra un bug. Ti dispiacerebbe aprire un bug (http://wix.sourceforge.net) con i dettagli. Dovremmo essere in grado di risolvere in WiX v3.5. –

+0

Grazie per il suggerimento ([docs] (http://wixtoolset.org/documentation/manual/v3/howtos/general/optimizing_builds.html))! Nel mio caso ha ridotto il tempo necessario per creare il pacchetto msi da circa 50 a solo 10 (~ 200 file/~ 100 MB). – CodeFox