2016-06-17 6 views
0

Ich habe eine Datei Product.wxs, die etwa 3000 Zeilen ist. Ich habe es in verschiedene Dateien aufgeteilt. Aber einige dieser Dateien sind auch sehr groß und es wird mühsam sein, sie aufrechtzuerhalten. Eine der Dateien enthält Strukturdatei und sieht wie folgt aus:WiX: Ist es möglich, Komponenten in verschiedene Dateien zu legen?

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Component Id="ComponentId" .... > 
      .... 
    <Component /> 
<Directory /> 

Die Komponente mit Id = „ComponentId“ enthält viele RegistryValues ​​(600 Zeilen). Ich möchte diese Komponente und alle Registrierungswerte in eine separate Datei einfügen und nur darauf verweisen. Ich habe versucht, ComponentRef, aber es funktioniert nicht innerhalb Directory-Knoten. Gibt es eine Möglichkeit? Vielen Dank im Voraus.

Antwort

3

Ja, das ist im Grunde der ideale Anwendungsfall für eine große Installation. Sie sollten alle ähnlichen Komponenten in ihre eigenen wxs-Dateien verschieben, so dass es einfacher ist, sie zu finden, wenn Sie die enthaltenen Dateien ändern müssen.

Mit wix können Sie jeden Teil der XML-Definitionen in einem <Fragment>-Tag definieren. Dies definiert lediglich eine eigenständige, idealerweise verwandte Definition für das Installationsprogramm. Wenn Sie Ihr Installationsprogramm kompilieren, wird das gesamte Fragment verworfen , es sei denn gibt es eine Referenz, die es in Ihr Produkt bindet.

Das glaube ich nicht, dass Sie eine ComponentRef verwenden können die Komponentenverzeichnis zu definieren, so dass wahrscheinlich ist, was die Ursache Sie Trauer, wenn sie versuchen es unter einem DirectoryRef Tag zu verwenden (DirectoryRef und ComponentRef gültig Eltern und Kinder sehen). Sie sollten entweder DirectoryRef/Directory über Ihrer Komponentendefinition haben oder den Directory = "" Wert für das Component-Tag verwenden.

Um Ihre Komponente zu referenzieren, sollten Sie entweder eine ComponentRef in einem ComponentGroup-Tag oder die ComponentRef in einem Feature-Tag verwenden.

+0

Vielen Dank für Ihre Antwort. Ich habe die Verzeichnisstruktur in der Hauptdatei Product definiert und große Komponenten in separate Dateien unter DirectoryRef eingefügt. Es sieht alles sehr schön aus. – user1872329