2011-01-13 21 views
3

Ich verwende Wix/Votive, um ein Installationsprogramm für meine .NET-Lösung zu erstellen. Ich schließe die Binärdateien von den anderen Projekten (EXE und DLLs) mit Projektreferenzen ein (die intern heat.exe ich denke).So stellen Sie native Images (NGen) mithilfe von Wix und Projektreferenzen bereit

Was ich jetzt tun möchte, ist, während der Installation alle Baugruppen mit ngen.exe vorzuspritzen. Nach Hilfe Wix, kann dies durch die durchgeführt werden WiX .NET extensions library:

<Component Id="App.exe" Guid="PUT-GUID-HERE"> 
    <File Id="App.exe" Source="App.exe" KeyPath="yes"> 
     <netfx:NativeImage Id="ngen_App.exe" Platform="32bit" Priority="0" /> 
    </File> 
</Component> 

Das Problem ist jetzt, dass die <File />-Tags werden von heat.exe erstellt und ich kann nicht herausfinden, wie entweder heat.exe beraten die <NativeImage /> zu erzeugen Etikett im Inneren oder wie das generierte <File />-Tag zu referenzieren und die <NativeImage />-Tag extern anfügen.

Im Moment ist die einzige Möglichkeit, die ich sehe, nicht, Projektreferenzen zu verwenden, aber offensichtlich möchte ich sie behalten.

Irgendwelche Vorschläge? Vielen Dank!

Antwort

3

Wärme ist nicht dafür gedacht und unterstützt diese Geschichte nicht. Die meisten Leute benutzen Heat einmal, um das meiste Gewicht beim Erstellen des WXS zu verwenden und es dann als Code von dort zu pflegen. Einige Leute mögen es, dies in Build-Prozesse zu bringen, um dynamisch zu werden, aber ich bin wirklich dagegen aus Gründen, die sonst wo gefunden werden können, wenn Sie interessiert sind.

Also machen Sie es so oder schreiben Sie eine Automatisierung nach hitze, die LINQ to XML (oder Ihr Lieblings-XML-DOM) verwendet, um nach Dateielementen zu suchen, die .NET-Assemblies sind, und sie dann mit Kind-NativeImage-Elementen zu markieren. Sie müssen auch die Namespace-Deklaration oben im Dokument platzieren.