首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WIX热PreBuild变量名为目录到收获

WIX热PreBuild变量名为目录到收获
EN

Stack Overflow用户
提问于 2015-12-09 20:24:54
回答 1查看 3.4K关注 0票数 3

我正在开发一个新的安装程序(第一个使用WiX)。我正在使用热从一个参考的项目解决方案中获取输出文件,并且我已经让它工作得很好。问题是,在我的热调用中,我使用了一个到我的收获目录的绝对路径,我想用一个变量(最好是在一个configuration.wxi文件中)来替换它,以便我正在工作的其他人能够快速地改变他们机器上的路径。这是我的热预建活动电话:

代码语言:javascript
复制
call “$(WIX)bin\heat.exe” dir "C:\MyProjectPath\bin\Release" -dr APPLICATIONROOTDIRECTORY -cg ApplicationComponents -gg -g1 -scom -sreg -sfrag -srd -suid -var var.sourcePath -out “$(ProjectDir)Fragments\MainAppFiles.wxs”  -t $(ProjectDir)Transform.xslt

这个语句可以工作,但是正如您所看到的,我在dir标记之后有一个绝对路径,我想用变量名称替换它。我已经阅读了热标签的文件页,并且尝试过许多其他方法(包括定义预处理器变量),但是似乎没有什么效果。谁能给我指明正确的方向?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-12 16:58:11

有两种方式来调用热过程,在建设前的目标或在预制件事件。

预构建事件直接调用热过程,以便像上面所写的那样自动生成MyComponents.wxs文件。

在使用"HeatDirectory“或"HarvestDirectory”时,And目标也会执行相同的操作。

主要的区别是这个选项中哪一个更适合你。如上文所述,命令行或xml样式如下:

代码语言:javascript
复制
<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),可以将属性组定义为:

代码语言:javascript
复制
  <SourceDir Condition="Exists('$(TF_BUILD_BINARIESDIRECTORY)')">$(TF_BUILD_BINARIESDIRECTORY)\testfolder</SourceDir>
  <SourceDir Condition="!Exists('$(TF_BUILD_BINARIESDIRECTORY)')">$(MSBuildProjectDirectory)..\..\..\testfolder</SourceDir>

我列举了本地构建和TFS构建的示例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34188303

复制
相关文章

相似问题

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