15

我正在运行热量以生成 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>
4

2 回答 2

18

请注意,如果您使用 -b 将它们添加到搜索路径中,light 将为您的文件搜索其他 SourceDir

例如

light.exe -b Foo ...

(答案来自:https ://stackoverflow.com/a/6920979/640282 )

于 2012-09-05T16:37:49.663 回答
13

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

来自 heat.exe 帮助:

-varVariableName替代文件/@Source="SourceDir"

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

-var var.MySource

将变为 File/@Source="$(var.MySource)\myfile.txt"

-var wix.MySource

将变为 File/@Source="!(wix.MySource)\myfile.txt"

于 2011-12-21T13:08:46.527 回答