2009-07-30 13 views
8

Soy bastante nuevo en WIX, así que perdóneme si me falta el barco por completo aquí, pero me preguntaba si era posible volver a utilizar componentes (mwm, taxi, etc.) desde dentro de un archivo wxs sin tener luz volver a vincularlos todo el tiempo. El instalador en el que estoy trabajando tiene varios ejecutables, dlls y archivos de configuración que tienden a cambiar entre cada instalación. Estos archivos ascienden a aproximadamente 5 megas de valor de instalador. La parte que quiero reutilizar es el valor de ~ 350 megas de archivos de imagen/mapa/base de datos que no cambian muy a menudo y que no necesariamente necesito compilar/vincular cada vez que se crea el instalador.Reutilización de componentes WIX para acelerar vela/luz

He intentado crear un archivo mwm para los mapas, pero cuando hago referencia a ellos en el wxs, se vinculan mediante luz al archivo .msi principal. He intentado especificando un archivo CAB no incorporado para mantener los mapas:

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

pero cada vez que se ejecuta la luz, el archivo CAB independiente se regenera - que toma un tiempo.

Pensé simplemente en crear un archivo ZIP para entregar junto con el msi y hacer que el instalador simplemente iniciara el extracto zip, pero eso me parece anti-wix. Me gustaría que los archivos se eliminen cuando ya no sean necesarios.

¿Hay alguna otra operación como wix que me falta? He leído sobre fragmentos, pero eso no parece ser lo que estoy buscando.

Gracias, David

Respuesta

12

Su intuición absolutamente le está llevando en la dirección correcta. La característica que está buscando se llama "cab-cache". Lo usa añadiendo lo siguiente a la línea de comandos light.exe:

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

Nota: La compilación (candle.exe) y la vinculación (primera mitad del light.exe) debería ocurrir muy rápidamente. Lo que generalmente es lento es el enlace (segundo tiene de light.exe) porque realmente toca todos los archivos y crea los gabinetes. La construcción del gabinete es la parte más lenta, así que con suerte el caché de la cabina acelera las cosas lo suficiente para usted.

P.S .: Si la compilación lleva mucho tiempo, puede crear ".wixlib" con lit.exe. Tengo más información sobre .wixlibs aquí: http://robmensching.com/blog/posts/2008/10/10/What-are-.wixlibs-and-why-would-you-use-them

+0

Eureka! Justo lo que estaba buscando. No parece funcionar si los gabinetes NO están incrustados, de alguna manera la luz borra el archivo .cab y luego lo busca. Idealmente, me gustaría que funcione con gabinetes no integrados, pero ciertamente es un poco más rápido que antes. –

+0

Hmm, ese comportamiento suena como un error. ¿Le importaría abrir un error (http://wix.sourceforge.net) con detalles? Deberíamos poder arreglarlo en WiX v3.5. –

+0

Gracias por el gran consejo ([docs] (http://wixtoolset.org/documentation/manual/v3/howtos/general/optimizing_builds.html))! En mi caso, redujo el tiempo para crear el paquete msi de aproximadamente 50 a solo 10 s (~ 200 archivos/~ 100MB). – CodeFox