我正在使用新的安装程序(第一个使用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的热量标签,并且我尝试了许多其他方法(包括定义预处理变量),但似乎没有任何效果。有人能指出我正确的方向吗?
答案 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构建提供了示例。