Wix Heat output未引用我想要的目录

Wix Heat output未引用我想要的目录,wix,windows-installer,Wix,Windows Installer,这是基本设置。我有一个现有的WIX项目,它将一堆单独的片段构建到一个更大的MSI中。我正试图改变周围的项目,以允许您选择个别件安装。我运行的程序是,当我在较小的目录上运行heat来创建单个组件时,源路径不正确。我将举一个例子,希望这会更有意义 所以我有这样的基本文件夹结构: <Component Id="cmpblablabla" Guid="{stuff-here}"> <File Id="filblabla" KeyPath="yes" Source="Source

这是基本设置。我有一个现有的WIX项目,它将一堆单独的片段构建到一个更大的MSI中。我正试图改变周围的项目,以允许您选择个别件安装。我运行的程序是,当我在较小的目录上运行heat来创建单个组件时,源路径不正确。我将举一个例子,希望这会更有意义

所以我有这样的基本文件夹结构:

<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" />
</Component>
<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" />
</Component>
C:\ProjDir\Foo\Bar1
C:\ProjDir\Foo\Bar2

我曾经使用一个命令来简单地获取C:\Foo(Heat.exe dir Foo-dr Foo\u dir\u REF-out File.wxs),现在我将其更改为获取每个单独的Bar文件夹(Heat.exe dir Foo\Bar1-dr Bar1\u dir\u REF-out File1.wxs)和(Heat.exe dir Foo\Bar2-dr Bar2\u dir\u REF-out File2.wxs)。我遇到的问题是收获的产量如下所示:

<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" />
</Component>
<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" />
</Component>

当试图构建msi时,它会抱怨,因为它找不到SourceDir\Bar1。基本上我需要的是一种让它看起来像这样的方法:

<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" />
</Component>
<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" />
</Component>

这似乎是一个非常简单的问题,我确信很容易解决,但我所做的所有搜索都没有找到任何有用的东西。

应该是这样的

<Component Id="cmpblablabla" Guid="{stuff-here}">
    <File Id="filblabla" KeyPath="yes" Source="$(var.ProjectName.TargetPath)\Bar1\file.here" />
</Component>

可提供不同的属性

  • $(var.ProjectName.TargetPath)
  • $(var.ProjectName.ProjectDir)

您的问题的答案都在heat.exe帮助文本中。:-)

为了获得正确的目录捕获,将热量指向根目录(Foo),并在命令行中指定
-srd
开关。如帮助文本所述,这将省略根目录捕获,您很可能最终得到所需的内容


为了获得更大的灵活性,您可以指定提供WiX变量的
-var
开关,该变量将替换
SourceDir
显式语句。再次,只需运行
heat.exe
并查看输出-您将找到足够的信息和示例。

请注意,
light
将为您的文件搜索其他
SourceDir
,如果您使用
-b

e、 g


你知道怎么用热能吗?我知道-var.ProjectName.TargetPath将为我提供第一部分,但我需要的是Bar1,我还没有找到通过加热来实现这一点的方法。我知道我可以手动编辑文件,但我尝试用一种自动化的方式来编辑。这正是我所需要的。谢谢。很高兴知道您也可以指定多个-b。