Frage

Frische Vorstellung dieser Frage ->

Ich habe eine WIX-Datei, die ich brauche, mit MSBuild zu ändern. Es beginnt wie folgt:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">

  <?--... Various Removed Params ...-->

  <Product Id='$(var.ProductCode)'
    UpgradeCode='$(var.UpgradeCode)'
    Name='$(var.AppName)' Language="1033" Version='$(var.ProductVersion)'
    Manufacturer='$(var.Manufacturer)'>
    <Package Id='$(var.PackageCode)' InstallerVersion="200" 
    Compressed="yes" />

  <?--... More of the WIX XML file ...-->

  <iis:WebApplication Id='STWebApp' Name='MyWebSite' Isolation='medium' />

  <?--... Rest of the WIX XML file ...-->

Mein Problem ist die DEZA Aufgaben können nicht von dem XML-Knoten zu verweisen scheinen, die WIX verwendet sind. Zum Beispiel:

<XmlFile.SetAttribute Path="$(MSBuildProjectDirectory)\TestProduct.wxs"
         XPath="//iis:WebApplication" Namespaces="@(Namespaces)" 
         Name="Name" Value="$(VersionTag)"/>

funktioniert gut, weil es keine Wix Knoten verwenden ist (nur ein iis ein), aber wenn ich den vollen XPath Pfad zur Datei ( / Wix / Produkt / iis: WebApplication ) die Aufgabe, kehrt zurück:      Ressource kann nicht Zeichenfolge Keine Treffer für XPath-Ausdruck gefunden finden

Das ist kein Problem, bis ich einen Verzeichnisknoten (/ Wix / Produkt / Verzeichnis / Verzeichnis / Verzeichnis / Verzeichnis [@ id = 'STWebSiteDir'])

verweisen möchten

Ich habe versucht, die vollständige XPath und das kürzere // Verzeichnis mit [@ id = 'STWebSiteDir']. Ich habe einzelne und doppelte Anführungszeichen versucht, Ich habe versucht, den WIX Namespace auf den Aufruf Hinzufügen (ohne Präfix).

<ItemGroup>
  <Namespaces Include="http://schemas.microsoft.com/wix/IIsExtension">
    <Prefix>iis</Prefix>
    <Uri>http://schemas.microsoft.com/wix/IIsExtension</Uri>
  </Namespaces>
  <Namespaces Include="http://schemas.microsoft.com/wix/2006/wi">
    <Prefix></Prefix>
    <Uri>http://schemas.microsoft.com/wix/2006/wi</Uri>
  </Namespaces>
</ItemGroup>

Ich habe versucht, auch bekommen nur einen Verweis auf / Wix / Produkt und auch das fehlschlägt:

<XmlFile.SetAttribute Path="$(MSBuildProjectDirectory)\TestProduct.wxs" 
            XPath="/Wix/Product" Namespaces="@(Namespaces)" 
            Name="Name" Value="MODIFIED"/>

Mir fehlt eindeutig etwas. Jeder mit einem Hinweis auf, wo dies gehen, um zu arbeiten?

Vaccano

War es hilfreich?

Lösung

Können Sie definieren nur die Variablen in der Befehlszeile an den Präprozessor?

candle -dVariableName=ValueForVariable

Das könnte viel einfacher sein.

Andere Tipps

Haben Sie den Wix Standard-Namespace enthalten in @ (Namensräume)?

<ItemGroup>
  <Namespaces Include="http://schemas.microsoft.com/wix/IIsExtension">
    <Prefix>iis</Prefix>
    <Uri>http://schemas.microsoft.com/wix/IIsExtension</Uri>
  </Namespaces>
  <Namespaces Include="http://schemas.microsoft.com/wix/2006/wi">
     <Prefix>wis</Prefix>
    <Uri>http://schemas.microsoft.com/wix/2006/wi</Uri>
  </Namespaces>
</ItemGroup>

Sie sollten auch ein Präfix für wi-Namespace hinzufügen, danach kann es ok, ich Test es haben.

OK, also hier ist die Antwort:

Der Namespacepräfix benötigte für den Wix Teil zu fehlen, nicht nur leer gelassen

<ItemGroup>
  <Namespaces Include="http://schemas.microsoft.com/wix/IIsExtension">
    <Prefix>iis</Prefix>
    <Uri>http://schemas.microsoft.com/wix/IIsExtension</Uri>
  </Namespaces>
  <Namespaces Include="http://schemas.microsoft.com/wix/2006/wi">

    <Uri>http://schemas.microsoft.com/wix/2006/wi</Uri>
  </Namespaces>
</ItemGroup>

Und dann müssen Sie einen Präfix Wert auf den Wix Namespace in der Datei hinzuzufügen. Ich benutzte tst.

Vaccano

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