XPath في MSBuild (SDC) و WIX
-
03-07-2019 - |
سؤال
الطازجة يسأل هذا السؤال->
لدي WIX الملف الذي أنا بحاجة إلى تعديل باستخدام MSBuild.ويبدأ مثل هذا:
<?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 ...-->
مشكلتي هي المركز المهام لا يمكن أن يبدو للإشارة إلى أي من العقد xml التي يتم WIX ذات الصلة.على سبيل المثال:
<XmlFile.SetAttribute Path="$(MSBuildProjectDirectory)\TestProduct.wxs"
XPath="//iis:WebApplication" Namespaces="@(Namespaces)"
Name="Name" Value="$(VersionTag)"/>
يعمل على ما يرام لأنه لا يستخدم أي Wix العقد (فقط iis واحد), ولكن إذا كنت تستخدم كامل XPath الطريق إلى ذلك (/Wix/المنتج/iis:WebApplication) مهمة العوائد: لا يمكن أن تجد الموارد سلسلة لا يطابق تعبير XPath
هذه ليست مشكلة حتى أنا أريد أن المرجعية دليل عقدة (/Wix/المنتج/دليل/دليل/دليل/دليل[@Id='STWebSiteDir'])
لقد حاولت استخدام كامل XPath و أقصر //Directory[@Id='STWebSiteDir'].لقد حاولت واحدة ونقلت الاقتباس المزدوجة ، لقد حاولت إضافة WIX مساحة لدعوة (بدون اختصار).
<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>
حتى لقد حاولت أن تحصل على مجرد الإشارة إلى /Wix/المنتج وحتى فشل ذلك:
<XmlFile.SetAttribute Path="$(MSBuildProjectDirectory)\TestProduct.wxs"
XPath="/Wix/Product" Namespaces="@(Namespaces)"
Name="Name" Value="MODIFIED"/>
أنا واضح في عداد المفقودين شيء.أي شخص مع تلميح بشأن أين تذهب للحصول على هذا العمل ؟
Vaccano
المحلول
يمكنك فقط تحديد المتغيرات في سطر الأوامر إلى المعالج?
candle -dVariableName=ValueForVariable
قد يكون أسهل بكثير.
نصائح أخرى
هل شملت Wix مساحة اسم افتراضية في @(مساحات)?
<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>
يجب إضافة بادئة wi مساحة أيضا,بعد ذلك يمكن أن حسنا,لدي اختبار.
ها هو الجواب:
Namespace prefix بحاجة إلى أن تكون في عداد المفقودين على wix جزء ، ليس فقط تترك فارغة
<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>
ثم تحتاج إلى إضافة بادئة قيمة wix مساحة في الملف.اعتدت tst.
Vaccano