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

RKM*_*RKM 14 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>
Run Code Online (Sandbox Code Playgroud)

zar*_*oss 16

请注意,如果使用-b将光源添加到搜索路径,灯光将搜索文件的其他SourceDir

例如

light.exe -b Foo ...
Run Code Online (Sandbox Code Playgroud)

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

  • 在Visual Studio中:项目属性>工具设置>链接器.键入-b路径.或者,将LinkerBindInputPaths元素添加到.wixproj文件中的PropertyGroup. (5认同)

ima*_*agi 13

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

来自heat.exe的帮助:

-varVariableName substitute File/@ Source ="SourceDir"

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

-var var.MySource

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

-var wix.MySource

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

  • 但是我们需要添加一个"include"标题,以便识别变量.对? (2认同)
  • 是的,但这是手工工作.如果可能的话,会喜欢自动完成这个问题的答案. (2认同)