Jak mohu nastavit xmlns atribut při použití XMLFile v Wix 3

hlasů
4

Jsem přidávání prvků do XML souboru během instalace pomocí XmlFile prvek:

<util:XmlFile Id=SetOracleDialectProperty
              Action=createElement
              ElementPath=//hibernate-configuration/session-factory
              Name=property
              Sequence=9
              File=[INSTALLLOCATION]Config\hibernate.config
              Value=NHibernate.Dialect.Oracle10gDialect/>

Prázdný soubor Píši vypadá takto:

<hibernate-configuration xmlns=urn:nhibernate-configuration-2.2>
  <session-factory>
  </session-factory>
</hibernate-configuration>

Po spuštění instalačního programu jsem se skončit s tímto:

<hibernate-configuration xmlns=urn:nhibernate-configuration-2.2>
  <session-factory>
    <property xmlns=>NHibernate.Dialect.Oracle10gDialect</property>
  </session-factory>
</hibernate-configuration>

Problém je v tom, že prázdné xmlns atribut je přepsání xmlns uvedené v kořenovém uzlu souboru, takže vlastnost prvek není správně rozpoznaly NHibernate.

Jak mohu buď nastavit hodnotu tak, aby odpovídala na kořenový uzel nebo odebrat atribut xmlns?

Strávil jsem nějaký čas hledáním odpovědi a nejbližší jsem našel je „to, co byste udělali v MSXML“, který se mi nepomůže, protože neříká, jak to udělat v WiX (např co atribut na XmlFile použít).

EDIT Vysvětlit Robyho odpověď mírně, v místě, kde mohu použít pěkné formátování:

  • Přidáte fragment dokument nastavením uzlu = „dokument“ na XmlConfig prvku.
  • Musíte explicitně nastavit jmenný prostor jinak dostanete výchozí název znovu.
  • Také i když přidáváte „dokument“ nezdá se do práce, pokud zadáte více než jeden prvek. Dostanete tajemné a důkladně neužitečné „Průvodce nastavením skončil předčasně“ Chyba runtime.

Takže můj pevný kód vypadá takto:

<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>
Položena 26/08/2009 v 22:34
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

Vím, že je to let později, ale jestli někdo narazí na to myslím, že skutečné řešení je toto:

<util:XmlFile Id="SetOracleDialectProperty"
              Action="createElement"
              ElementPath="//hibernate-configuration/session-factory"
              Name="urn:nhibernate-configuration-2.2:property"
              Sequence="9"
              File="[INSTALLLOCATION]Config\hibernate.config"
              Value="NHibernate.Dialect.Oracle10gDialect"/>

změna od Name="property"do Name="urn:nhibernate-configuration-2.2:property"- pokud je config napsáno, že bude apprear as stejně jako pozná, že je výchozí jmenný prostor. Měl jsem stejný problém stavěcí manifest soubory a tento přístup je třídit.

Odpovězeno 14/04/2012 v 20:02
zdroj uživatelem

hlasů
1

Problém je, že MSXML uvádí, že createElement bude vždy vám výchozí jmenný prostor (stejně jako vidíte). Myslím, že budete muset přejít na složitější, ale silnější XmlConfig. V tomto případě zkuste použít fragmentu dokumentu přidat celý prvek se správnou názvů namísto v závislosti na MSXML vytvořit za vás.

Odpovězeno 27/08/2009 v 02:00
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more