Ich Hinzufügen von Elementen zu einer XML-Datei während der Installation XMLFILE Element mit:Wie richte ich das xmlns-Attribut, wenn XMLFile in Wix mit 3
<util:XmlFile Id="SetOracleDialectProperty"
Action="createElement"
ElementPath="//hibernate-configuration/session-factory"
Name="property"
Sequence="9"
File="[INSTALLLOCATION]Config\hibernate.config"
Value="NHibernate.Dialect.Oracle10gDialect"/>
Die leere Datei, die ich wie folgt aussieht schreibe:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
</session-factory>
</hibernate-configuration>
Nach dem Ausführen des Installers ich mit diesem Ende:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property xmlns="">NHibernate.Dialect.Oracle10gDialect</property>
</session-factory>
</hibernate-configuration>
Das Problem ist, dass die leere Das xmlns-Attribut überschreibt die im Stammknoten der Datei angegebenen xmlns, sodass das Eigenschaftenelement von nhibernate nicht korrekt erkannt wird.
Wie kann ich den Wert entweder auf den Stammknoten einstellen oder das Attribut xmlns entfernen?
Ich habe einige Zeit damit verbracht, nach einer Antwort zu suchen und die nächste, die ich gefunden habe, ist "tu, was du in MSXML machen würdest", was mir nicht hilft, wie es in WiX zu machen ist (z welches Attribut auf XmlFile zu verwenden ist).
EDIT Um Robs Antwort leicht, an einem Ort zu erklären, wo ich schöne Formatierung verwenden:
- Sie fügen ein Dokumentfragment von Node = „Dokument“ auf dem XMLConfig Elemente festlegen.
- Sie müssen den Namespace explizit festlegen, sonst erhalten Sie wieder den Standardnamen.
- Auch wenn Sie ein "Dokument" hinzufügen, scheint es nicht zu funktionieren, wenn Sie mehr als ein Element angeben. Sie erhalten einen mysteriösen und sehr wenig hilfreichen "Setup Wizard vorzeitig beendet" Laufzeitfehler.
So sieht mein festen Code wie folgt aus:
<util:XmlConfig Id="MsSqlDialect"
Action="create"
ElementPath="//hibernate-configuration/session-factory"
File="[INSTALLLOCATION]Config\hibernate.config"
Node="document">
<![CDATA[
<property xmlns="urn:nhibernate-configuration-2.2" name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
]]>
</util:XmlConfig>