Wixの新しいネームスペースから属性と要素を追加し、Wixで無視するにはどうすればよいですか?

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

  •  05-07-2019
  •  | 
  •  

質問

Wix wxsファイルに無関係な属性を追加し、Wixにそれを無視させたい。

現在、拡張機能を検索すると、次のエラーがスローされます。

Component要素には、未処理の拡張属性「myns:myattr」が含まれています。 「 http://tempuri.org/myschema.xsd 」内の属性の拡張子を確認してください。名前空間が提供されています。

ロブ、ボブ、またはwixチームリスニングの誰か!!:)

役に立ちましたか?

解決

そのXML名前空間の要素を処理するwix拡張機能を記述します。次の拡張機能の例では、名前空間http://www.example.com内の要素はすべて無視されます。

次のコードを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
      }

   }
}

次のようにmywixext.dllにコンパイルします:

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

オプション-ext mywixext.dllを使用してwixソースをコンパイルする(または、votiveで同等の操作を行う)場合、WIX名前空間のすべての要素は無視されます。

編集:どの要素も無視されると言ったとき、私は不正確でした。 WIX XMLスキーマでは、独自の子要素を<xs:any namespace="##other" processContents="lax">要素の下に直接追加することはできません。他のほとんどの要素で許可されています。 c:\program files\windows installer xml v3\doc\wix.xsdでテキスト<=>を探して、拡張ポイントを見つけます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top