WIX Heat PreBuild变量名称,用于收集目录

时间:2015-12-09 20:24:54

标签: wix heat

我正在使用新的安装程序(第一个使用WiX)。我使用Heat来从引用的项目解决方案中获取输出文件,并且我已经使它运行良好。问题是我在我的热调用中使用了一个绝对路径到我的收获目录,我想用变量替换它(最好是在configuration.wxi文件中),以便我和其他人一起使用;使用它可以快速更改其计算机上的路径。这是我的热预制活动电话:

import itertools

def all_subsets(l):
    res = []
    for subset_len in range(1, len(l)+1):
        for combo in itertools.combinations(l, subset_len):
            res.append(combo)
    return res

data = [1, 2, 3, 4]
print(all_subsets(data))

此语句有效,但正如您所见,我有一个绝对路径位于 dir标记后面,我想用变量名替换。我已经阅读了documentation page的热量标签,并且我尝试了许多其他方法(包括定义预处理变量),但似乎没有任何效果。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

在构建目标之前或预建事件中,有两种方法可以调用加热过程。

Prebuild事件直接调用加热过程,以便自动生成MyComponents.wxs文件,如上所述。

使用" HeatDirectory"之前的构建目标也是如此。或" HarvestDirectory"。

主要区别在于哪个选项更适合您。如上所述,命令行或xml样式,如:

<Target Name="BeforeBuild">
 <HarvestDirectory Include="$(SourceDir)">
    <DirectoryRefId>INSTALLDIR</DirectoryRefId>
    <ComponentGroupName>cmpMain</ComponentGroupName>
    <PreprocessorVariable>var.SourceDir</PreprocessorVariable>
    <SuppressUniqueIds>false</SuppressUniqueIds>
    <SuppressCom>true</SuppressCom>
    <SuppressRegistry>true</SuppressRegistry>
    <SuppressRootDirectory>true</SuppressRootDirectory>
    <KeepEmptyDirectories>false</KeepEmptyDirectories>
    <Transforms>DefaultTransform.xsl</Transforms>
 </HarvestDirectory>
</Target>

要使用$(SourceDir),您可以将属性组定义为:

  <SourceDir Condition="Exists('$(TF_BUILD_BINARIESDIRECTORY)')">$(TF_BUILD_BINARIESDIRECTORY)\testfolder</SourceDir>
  <SourceDir Condition="!Exists('$(TF_BUILD_BINARIESDIRECTORY)')">$(MSBuildProjectDirectory)..\..\..\testfolder</SourceDir>

我已经为本地构建和TFS构建提供了示例。

相关问题