Pregunta
Tengo un archivo WIX que necesito modificar usando MSBuild. Comienza así:
<?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 ...-->
Mi problema es que no sé qué haría el XPath al <? define ProductVersion = " 1.0.1 "? >
. ¿Hay alguna forma de hacer referencia a eso a través de XPath para que pueda usar la tarea SDC SetValue MSBuild para cambiarlo? No es un nodo (creo), así que no estoy seguro de cómo hacer referencia a él.
Vaccano
Solución
Parece que / Wix / processing-instruction ('define')
puede funcionar para un XPath (ya sea que MSBuild lo reconozca, no lo sé).
Al conectarlo en SketchPath , pude hacer clic en él y probar varios XPaths para ver Qué seleccionaría ese elemento.
Otros consejos
Otro enfoque sería definir el parámetro a través de la línea de comandos a candle:
candle -dProductVersion=1.0.1
// instrucción-procesamiento ('definir')
<? define >
es un nodo de instrucciones de procesamiento, por lo que debería poder abordarlo con una expresión XPath como
//processing-instruction('define')