在我的Product.wxs文件中,我有以下元素:
<WixVariable Id="MySourceDir" Overridable="yes" Value="C:\somePath\files\"/>
然后在热量生成的wxs文件中,我有以下几点:
<Fragment>
<ComponentGroup Id="FunctionalLibs">
<Component Id="cmp3A42AC690DA7590004EC5796B1C6BA95" Directory="dir5DCBEA4AA069AE7BD92B4A3EA9C5EC79" Guid="{8FD7F7BF-68C1-492C-8F29-8E3003A6F441}">
<File Id="fil007BA1D3A56EDEA1D669D51D8C61F518" KeyPath="yes" Source="!(wix.MySourceDir)\file1.dll" />
</Component>
</ComponentGroup>
</Fragment>
在我的nant构建文件中
<light exedir="${wix.dir}"
out="${output.dir}\PluginInstaller.msi"
cultures="en-us"
rebuild="true"
suppresspdb="true">
<sources basedir="${release.dir}\obj\\${configuration}">
<include name="*.wixobj" />
</sources>
</light>
如何从轻量级任务中设置wix.MySourceDir值?
答案 0 :(得分:1)
如NAnt Task Reference for Light中所述,您可以使用<arg>
标记向Light.exe添加其他参数。 command line reference for light.exe表示我们使用-d
来定义WixVariables,因此:
<light exedir="${wix.dir}"
out="${output.dir}\PluginInstaller.msi"
cultures="en-us"
rebuild="true"
suppresspdb="true">
<sources basedir="${release.dir}\obj\\${configuration}">
<include name="*.wixobj" />
</sources>
<arg line="-dMySourceDir=C:\somePath\files\" />
</light>
这应该可以解决问题。但是,或许更简单,更受支持,更常见的定义源目录的方法就像使用预处理器变量一样。 Candle Task直接使用<defines>
代码支持他们,对源代码的唯一更改是将Source="!(wix.MySourceDir)\file1.dll"
更改为Source="!(var.MySourceDir)\file1.dll"
。