XPaths和<! - ? ? - >

时间:2009-05-04 18:23:43

标签: xml xpath wix

我有一个需要使用MSBuild修改的WIX文件。它是这样开始的:

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

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

  <?define ProductVersion = "1.0.1"?>

  <?--... 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" />

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

我的问题是我不知道XPath会对<?define ProductVersion = "1.0.1"?>产生什么影响。有没有办法通过XPath引用它,所以我可以使用SDC SetValue MSBuild任务来改变它?它不是一个节点(我认为)所以我不确定如何引用它。

Vaccano

4 个答案:

答案 0 :(得分:4)

另一种方法是通过命令行将参数定义为蜡烛:

candle -dProductVersion=1.0.1

答案 1 :(得分:3)

看起来/Wix/processing-instruction('define')可能适用于XPath(无论MSBuild是否识别出来,我都不知道)。

通过将其插入SketchPath,我可以在其中单击并测试各种XPath以查看将选择该元素的内容。

答案 2 :(得分:0)

//处理指令( '定义')

答案 3 :(得分:0)

<?define>是一个处理指令节点,因此您应该能够使用XPath表达式来解决它,例如

//processing-instruction('define')