Вопрос
У меня есть файл 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">
<?--... 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, чтобы изменить ее?Это не узел (я думаю), поэтому я не знаю, как на него ссылаться.
Ваккано
Решение
Это выглядит как /Wix/processing-instruction('define')
может работать для XPath (признает ли это MSBuild, я не знаю).
Подключив это к СкетчПуть, я смог щелкнуть по нему и протестировать различные XPath, чтобы увидеть, что выберет этот элемент.
Другие советы
Другой подход — определить параметр свечи через командную строку:
candle -dProductVersion=1.0.1
//инструкция-обработки('определить')
<?define>
— это узел инструкций обработки, поэтому вы должны иметь возможность обращаться к нему с помощью выражения XPath, например
//processing-instruction('define')