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

时间:2011-12-13 15:51:09

标签: wix heat

我正在运行加热以生成wxs文件。代码如下。

我想将dir.prompts中的所有文件添加到安装程序中的wxs文件中。我将其添加为自动构建过程的一部分(因此我无法在生成后修改wxs文件)。

生成wxs文件,它看起来如下所示。 Hoewever,然后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 个答案:

答案 0 :(得分:16)

请注意,如果您使用-b

将灯光添加到搜索路径,灯光将搜索其他SourceDir文件

e.g。

light.exe -b Foo ...

(回答:https://stackoverflow.com/a/6920979/640282

答案 1 :(得分:13)

您应该将-var开关添加到加热命令行:

来自heat.exe帮助:

-var VariableName 替换文件/ @ Source =“SourceDir”

使用预处理程序或wix变量。例如:

-var var.MySource

将成为File / @ Source =“$(var.MySource)\ myfile.txt”

-var wix.MySource

将成为File / @ Source =“!(wix.MySource)\ myfile.txt”