我正在尝试在wix中设置预处理器变量,但是我找不到一个这样的例子,也无法在互联网上的任何地方找到如何做到这一点的解释,我希望这里有人能解释或告诉我哪里出了问题!
我已经尝试了这里所示的关于设置var值http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/的示例
可以在这里找到在wix中使用HeatDirectory tak的文档,这些文档一点用处都没有!
如何将preprocessorVariable设置为用SourceDir替换另一个变量名?
发布于 2015-06-18 19:29:23
我有一个非常大的安装工具包要在Visual Studio 2013中构建(包括一些与主项目相关的工具,一个windows服务和一个具有重要目录结构的web应用程序)。我仍然在学习如何使用WiX,并且仍然在制作、测试和完善WiX项目。目前,我使用以下形式的命令将采集任务设置为构建事件
"C:\Program Files (x86)\WiX工具集v3.9\bin\heat.exe“dir "$(SolutionDir)\MyProjectDir\bin\$(ConfigurationName)”-cg MyComponentRef -ag -dr MYINSTALLDIR -srd -wixvar -var var.MySourceFiles -sreg -out "$(SolutionDir)\Deployment\My Installer Project\ComponentList.wxs“-t "$(SolutionDir)\Deployment\My Installer Project\FileFilter.xslt”
此命令只获取项目的bin\Debug (或bin\Release)文件夹中的所有文件,然后使用xml样式表转换对其进行过滤。有相当多的收获需要像这样收集,所以维护所有的源文件变量(命令中的"var.MySourceFiles“参数)变得单调乏味且容易出错。最初,我将声明添加到项目的预处理器变量中,但我想要更“自包含”的声明。使用我在WiX tricks and tips找到的有用提示,我声明了一个新的包含文件"PreprocessorVars.wxi“,其中包含内容
并让xslt将其包含在由heat.exe生成的输出中
<xsl:processing-instruction name="include">
$(sys.CURRENTDIR)\PreprocessorVars.wxi
</xsl:processing-instruction>xslt现在生成如下所示的输出:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
<?include
$(sys.CURRENTDIR)\PreprocessorVars.wxi
?>
<Fragment>
<DirectoryRef Id="MYINSTALLDIR" />
</Fragment>
<Fragment>
<ComponentGroup Id="MyComponentRef">
<Component Id="xyz" Directory="MYINSTALLDIR" Guid="*">
<File Id="abc" KeyPath="yes" Source="$(var.MySourceFiles)\MyProjectExecutable.exe" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>Wix处理它时没有任何错误。
https://stackoverflow.com/questions/2605907
复制相似问题