首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preprocessorVariable HeatDirectory任务-设置WIX

preprocessorVariable HeatDirectory任务-设置WIX
EN

Stack Overflow用户
提问于 2010-04-09 16:10:16
回答 6查看 19.8K关注 0票数 15

我正在尝试在wix中设置预处理器变量,但是我找不到一个这样的例子,也无法在互联网上的任何地方找到如何做到这一点的解释,我希望这里有人能解释或告诉我哪里出了问题!

我已经尝试了这里所示的关于设置var值http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/的示例

可以在这里找到在wix中使用HeatDirectory tak的文档,这些文档一点用处都没有!

如何将preprocessorVariable设置为用SourceDir替换另一个变量名?

EN

Stack Overflow用户

发布于 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生成的输出中

代码语言:javascript
复制
    <xsl:processing-instruction name="include">
        $(sys.CURRENTDIR)\PreprocessorVars.wxi
    </xsl:processing-instruction>

xslt现在生成如下所示的输出:

代码语言:javascript
复制
<?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处理它时没有任何错误。

票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2605907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档