Wie kann ich Attribute und Elemente aus einem neuen Namensraum in Wix und ignoriert von Wix?

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

  •  05-07-2019
  •  | 
  •  

Frage

Ich möchte eine unabhängige Attribut hinzufügen in der Wix wxs Datei und wollen Wix es zu ignorieren.

Es wirft derzeit folgenden Fehler auf, als es für die Verlängerung geht suchen.

Das Component-Element enthält eine nicht behandelte Erweiterung Attribut 'myns: myattr'. Bitte stellen Sie sicher, dass die Erweiterung für Attribute in der ‚ http://tempuri.org/myschema.xsd ‘ Namensraum wurde zur Verfügung gestellt.

Rob, Bob oder jemand auf Wix Team hören !!:)

War es hilfreich?

Lösung

eine Wix Erweiterung schreiben die Elemente in diesem XML-Namespace behandelt. Das folgende Beispiel Erweiterung werden alle Elemente im Namensraum http://www.example.com verursachen ignoriert werden:

Speichern Sie den folgenden Code 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
      }

   }
}

Nun kompilieren es in mywixext.dll wie folgt aus:

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

Wenn Sie jetzt Ihre Wix Quellen mit der Option -ext mywixext.dll kompilieren (oder das Äquivalent in Votiv tun), dann werden alle Elemente im http://www.example.com Namespace ignoriert.

Bearbeiten : Ich ungenau war, als ich sagte, dass jedes Element außer Acht gelassen werden würde. Das WIX XML-Schema erlaubt Ihnen nicht, Ihr eigenes Kind Elemente direkt unter dem WIX Element hinzuzufügen. Die meisten anderen Elemente erlauben es. Geben Sie für den Text <xs:any namespace="##other" processContents="lax"> in c:\program files\windows installer xml v3\doc\wix.xsd die Erweiterungspunkte zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top