Wix Heat 输出没有像我想要的那样引用目录
Posted
技术标签:
【中文标题】Wix Heat 输出没有像我想要的那样引用目录【英文标题】:Wix Heat output not referencing directory like I want 【发布时间】:2011-08-02 16:46:56 【问题描述】:所以这是基本设置。我有一个现有的 WIX 项目,它将一堆单独的片段构建到一个更大的 MSI 中。我正在尝试更改项目以允许您选择要安装的单个部件。我运行的程序是,当我在较小的目录上运行 heat 以创建单个组件时,源路径不正确。我将举一个例子,希望这会更有意义。
所以我有这样的基本文件夹结构:
C:\ProjDir\Foo\Bar1 C:\ProjDir\Foo\Bar2
我曾经使用一个命令来简单地获取 C:\Foo (Heat.exe dir Foo -dr FOO_DIR_REF -out File.wxs),现在我将其更改为获取每个单独的 Bar 文件夹 (Heat.exe dir Foo\Bar1 -dr BAR1_DIR_REF -out File1.wxs)和(Heat.exe dir Foo\Bar2 -dr BAR2_DIR_REF -out File2.wxs)。我遇到的问题是收获的输出如下所示:
<Component Id="cmpblablabla" Guid="stuff-here">
<File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" />
</Component>
在尝试构建 msi 时它会抱怨,因为它找不到 SourceDir\Bar1。基本上我需要的是一种让它看起来像这样的方法:
<Component Id="cmpblablabla" Guid="stuff-here">
<File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" />
</Component>
这似乎是一个非常简单的问题,我确信这很容易解决,但我所做的所有搜索都没有找到任何有用的东西。
【问题讨论】:
【参考方案1】:请注意,如果您使用 -b
将它们添加到搜索路径中,SourceDir
将搜索您的文件的其他 SourceDir
例如
light.exe -b Foo ...
【讨论】:
这正是我所需要的。非常感谢。很高兴知道您也可以指定多个 -b。【参考方案2】:应该是
<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)【讨论】:
你知道如何使用热量来做到这一点吗?我知道 -var var.ProjectName.TargetPath 会让我获得第一部分,但我需要的是 Bar1,我还没有找到通过热量来做到这一点的方法。我知道我可以手动编辑文件,但我试图以自动方式进行。【参考方案3】:您的问题的答案都在 heat.exe 帮助文本中。 :-)
为了获得正确的目录收获,请将热量指向您的根目录 (Foo),并在命令行中指定 -srd
开关。正如帮助文本所述,这将省略 root dir 收获,您很可能最终会得到您需要的东西。
为了获得更大的灵活性,您可以指定 -var
开关以提供 WiX 变量,以替换 SourceDir
显式语句。同样,只需运行 heat.exe
并查看输出 - 您会找到足够的信息和示例。
【讨论】:
以上是关于Wix Heat 输出没有像我想要的那样引用目录的主要内容,如果未能解决你的问题,请参考以下文章