Come posso aggiungere attributi ed elementi da un nuovo spazio dei nomi in Wix e ignorato da Wix?

StackOverflow https://stackoverflow.com/questions/1803593

  •  05-07-2019
  •  | 
  •  

Domanda

Voglio aggiungere un attributo non correlato nel file Wix wxs e voglio che Wix lo ignori.

Attualmente genera l'errore seguente mentre cerca l'estensione.

L'elemento Component contiene un attributo di estensione non gestita 'myns: myattr'. Assicurati che l'estensione per gli attributi in " http://tempuri.org/myschema.xsd " lo spazio dei nomi è stato fornito.

Rob, Bob o chiunque nel team di wix ascolta !! :)

È stato utile?

Soluzione

Scrivi un'estensione wix che gestisce gli elementi in quello spazio dei nomi XML. La seguente estensione di esempio farà ignorare tutti gli elementi nello spazio dei nomi http://www.example.com:

Salva il seguente codice in mywixext.cs:

using System.Xml.Schema;
using Microsoft.Tools.WindowsInstallerXml;
using System.Xml;

[assembly: AssemblyDefaultWixExtension(
   typeof(mywixext.IgnoreNamespaceWixExtension))]

namespace mywixext
{

   public class IgnoreNamespaceWixExtension : WixExtension
   {
      public override CompilerExtension CompilerExtension
      {
         get
         {
            return new IgnoreNamespaceCompilerExtension();
         }
      }
   }

   public class IgnoreNamespaceCompilerExtension : CompilerExtension
   {
      public override XmlSchema Schema
      {
         get
         {
            return new XmlSchema() 
            {
               TargetNamespace = "http://www.example.com" 
            };
         }
      }

      public override void ParseElement(
         SourceLineNumberCollection sourceLineNumbers,
         XmlElement parentElement, XmlElement element,
         params string[] contextValues)
      {
         // do nothing
      }

   }
}

Ora compilarlo in mywixext.dll in questo modo:

"c:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe" /t:library ^
/r:"c:\program files\windows installer xml v3\bin\wix.dll" ^
mywixext.cs

Se ora compili le tue fonti wix con l'opzione -ext mywixext.dll (o fai l'equivalente in votivo), tutti gli elementi nello spazio dei nomi WIX verranno ignorati.

modifica : ero impreciso quando ho detto che qualsiasi elemento sarebbe stato ignorato. Lo schema XML WIX non ti consente di aggiungere i tuoi elementi figlio direttamente sotto l'elemento <xs:any namespace="##other" processContents="lax">. La maggior parte degli altri elementi lo consente. Cerca il testo c:\program files\windows installer xml v3\doc\wix.xsd in <=> per trovare i punti di estensibilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top