生成的热文件无法找到SourceDir目录。

18
我正在运行heat来生成一个wxs文件。代码如下。
我想将dir.prompts目录中的所有文件添加到安装程序中的wxs文件中。并且我添加了这个过程作为自动化构建过程的一部分(这样一来,一旦生成了wxs文件,我就不能修改它)。
wxs文件已经生成,并且看起来像以下内容。然而,然后Light抱怨找不到SourceDir\Valid.wav的位置。所以我的问题是,SourceDir是我读取文件的目录,还是我不知道的某个神奇目录?非常感谢。
 <Fragment>
    <ComponentGroup Id="COMPONENTS">
        <Component Id="dmp120F8C2794******" Directory="dir31A7EE61C56025FE2564A81E28E8C132" Guid="{6D40EBC0-***-***-B972-**********}">
            <File Id="fil919100C2******D045EC131" KeyPath="yes" Source="SourceDir\Valid.wav" />
        </Component>



<exec program ="${dir.wix}\heat.exe">
  <arg value = "dir"/>
  <arg line = "${dir.prompts}"/> 
  <arg value= "-gg"/>
  <arg line="-cg &quot;COMPONENTS&quot;"/>
  <arg line = "-out  &quot;${dir.thisinstaller}\\COMPONENTS.wxs&quot;"/> 
</exec>
2个回答

20

1
我该如何在Visual Studio项目中完成这个任务? - Ian Hern
5
在Visual Studio中:项目属性>工具设置>链接器。键入-b路径。或在.wixproj文件的PropertyGroup中添加LinkerBindInputPaths元素。 - Tom Blodget

14
您应该在 heat 命令行中添加 -var 开关:
从 heat.exe 帮助文档中了解到:
-var VariableName 将 File/@Source="SourceDir" 替换为一个预处理器或者 wix 变量。例如:
-var var.MySource 将变成 File/@Source="$(var.MySource)\myfile.txt"
-var wix.MySource 将变成 File/@Source="!(wix.MySource)\myfile.txt"

2
但是我们需要添加一个“include”头文件,这样它才能识别变量。对吧? - MichaelS
3
是的,但那需要手动操作。如果可能的话,我希望能够自动完成这项工作。 - Pittfall
有没有一种方法可以在不使用环境变量的情况下提供SourceDir路径? - Giridhar Karnik
1
您可以使用Transform通过Heat添加一个包含头文件。http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Transform-output-of-heat-to-insert-an-include-statement-td7355923.html - KymikoLoco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接