2009-06-22 6 views
1

Ich verwende WiX (3.0.3815.0) auf einem ziemlich großen Projekt. Ich möchte einige Codegenerierung machen, die Fehlerelemente aus irgendeiner Art von Quelle erzeugen wird (Zweck: Beide C-kompilierten CAs und MSI müssen die Fehlerzeichenfolgen sehen und über die IDs Bescheid wissen). Ich erzeugen so etwas wie dieses:WiX löscht Fragmente mit nur Fehler-Elementen, wenn nicht durch benutzerdefinierte Aktionen referenziert

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
    <UI> 
     <Error Id="28002"><![CDATA[bla bla bla]]></Error> 
     <Error Id="28003"><![CDATA[bli bli bli]]></Error> 
(Lots more...) 
    </UI> 
    </Fragment> 
</Wix> 

Während bauen, ich benutze es, wie ich meine anderen .wxs Dateien verwenden: Rufen Sie candle.exe und gen.wixobj, und dann übergeben Sie es mit meinen anderen light.exe zusammen wixobjs.

Problem: WiX enthält die Fehlerzeilen in der resultierenden MSI-Fehlertabelle nicht (validiert mit Orca).

Hässliche Problemumgehung: Fügen Sie eine benutzerdefinierte Aktion mit Error = "28002" hinzu - dann wird die gesamte Datei in das MSI aufgenommen.

Jemand damit vertraut? Jede weniger hässliche Lösung?

Antwort

2

Das UIRef-Element wurde für genau diese Art hinzugefügt. Fügen Sie ein UI/@ Id-Attribut hinzu und fügen Sie ein UIRef-Element mit passendem @Id in das Fragment ein, das Ihre CustomAction-Definition enthält.

Verwandte Themen