2009-07-30 4 views
8

Ich bin ziemlich neu bei WIX, also vergib mir, wenn ich das Boot hier komplett vermisse, aber ich frage mich, ob es möglich ist, Komponenten (MWM, Kabine, etc) wieder zu verwenden innerhalb einer WXS-Datei ohne Licht jedes Mal neu verknüpfen. Das Installationsprogramm, an dem ich arbeite, hat mehrere ausführbare Dateien, DLLs und Konfigurationsdateien, die sich zwischen den einzelnen Installationen ändern. Diese Dateien belaufen sich auf etwa 5 Megabyte Installationsaufwand. Der Teil, den ich wiederverwenden möchte, ist die ~ 350 Megabyte Image-/Map-/Datenbank-Dateien, die sich nicht so oft ändern, dass ich nicht jedes Mal, wenn der Installer gebaut wird, kompilieren oder verlinken muss.WIX-Komponenten wiederverwenden, um Kerze/Licht zu beschleunigen

Ich habe versucht, eine mwm-Datei für die Karten zu erstellen, aber wenn ich sie innerhalb der wxs referenziere, werden sie durch Licht in die Hauptdatei .msi verbunden. Ich habe versucht, eine nicht eingebettete CAB-Datei specifing die Karten zu halten:

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

Aber jedes Mal, Licht läuft, zeigt der Stand-alone-CAB-Datei regeneriert wird - was eine Weile dauert.

Ich dachte über nur eine ZIP-Datei zusammen mit der msi zu liefern und lassen Sie den Installer nur den Reißverschluss extrahieren, aber das scheint mir anti-wix. Ich möchte die Dateien entfernt werden, wenn sie nicht mehr benötigt werden.

Gibt es noch andere wix ähnliche Operationen, die ich vermisse? Ich habe über Fragmente gelesen, aber das scheint nicht das zu sein, wonach ich suche.

Danke, David

Antwort

12

Ihre Intuition wird Sie in die richtige Richtung absolut führt. Die Funktion, nach der Sie suchen, heißt "cab-cache". Sie verwenden, indem Sie die folgenden in der light.exe Befehlszeile:

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

Hinweis: Kompilieren (candle.exe) und die Verknüpfung (erste Hälfte des light.exe) sollte sehr schnell passieren. Was normalerweise langsam ist, ist die Bindung (zweite haben von light.exe), weil es tatsächlich alle Dateien berührt und die Schränke baut. Cabinet Building ist der langsamste Teil, also hoffentlich beschleunigt der Cab-Cache die Dinge für dich ausreichend.

S.S .: Wenn das Kompilieren viel Zeit in Anspruch nimmt, können Sie ".wixlib" mit lit.exe erstellen. Ich habe mehr über .wixlibs hier: http://robmensching.com/blog/posts/2008/10/10/What-are-.wixlibs-and-why-would-you-use-them

+0

Eureka! Genau das, wonach ich gesucht habe. Scheint nicht zu funktionieren, wenn die Schränke NICHT eingebettet sind - irgendwie löscht das Licht die .cab Datei und sucht dann danach. Idealerweise würde ich gerne mit nicht eingebetteten Schränken arbeiten, aber es ist sicherlich ein bisschen schneller als vorher. –

+0

Hmm, das Verhalten klingt wie ein Bug. Würde es Ihnen etwas ausmachen, einen Bug (http://wix.sourceforge.net) mit Details zu öffnen. Wir sollten in der Lage sein, in WiX v3.5 zu beheben. –

+0

Vielen Dank für den tollen Tipp ([docs] (http://wixtoolset.org/documentation/manual/v3/howtos/general/optimizing_builds.html))! In meinem Fall wurde die Zeit für den Aufbau des MSI-Pakets von etwa 50 auf nur 10 Sekunden reduziert (~ 200 Dateien/~ 100 MB). – CodeFox

Verwandte Themen