Comment puis-je ajouter des attributs et des éléments à partir d'un nouvel espace de noms dans Wix et ignoré par Wix?

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

  •  05-07-2019
  •  | 
  •  

Question

Je veux ajouter un attribut sans lien dans le fichier Wix wxs et je veux que Wix l'ignore.

Il génère actuellement l'erreur suivante lors de la recherche de l'extension.

L'élément Component contient un attribut d'extension non géré "myns: myattr". Assurez-vous que l'extension des attributs dans le http://tempuri.org/myschema.xsd . Un espace de noms a été fourni.

Rob, Bob ou tout autre membre de l’équipe Wix à l’écoute !!:)

Était-ce utile?

La solution

Écrire une extension wix qui gère les éléments de cet espace de nom XML. L’exemple d’extension suivant entraîne l’ignorance de tous les éléments de l’espace de nommage http://www.example.com:

Enregistrez le code suivant dans 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
      }

   }
}

Maintenant, compilez-le dans mywixext.dll comme ceci:

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

Si vous compilez maintenant vos sources Wix avec l'option -ext mywixext.dll (ou effectuez l'équivalent en votif), tous les éléments de l'espace de noms WIX seront ignorés.

modifier : j'ai été imprécis lorsque j'ai déclaré que tout élément serait ignoré. Le schéma XML WIX ne vous permet pas d'ajouter vos propres éléments enfants directement sous l'élément <xs:any namespace="##other" processContents="lax">. La plupart des autres éléments le permettent. Recherchez le texte c:\program files\windows installer xml v3\doc\wix.xsd dans <=> pour rechercher les points d'extensibilité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top