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

问题描述:

我正在运行生成一个wxs文件。代码如下。热生成的文件无法找到SourceDir目录

我想将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> 

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

从heat.exe帮助:

-var VariableName替代文件/ @来源= “SourceDir”

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

-var var.MySource

将成为文件/ @来源= “$(var.MySource)\ myfile.txt的”

-var威克斯.MySource

将成为文件/ @来源= “!(wix.MySource)\ myfile.txt的”

+2

但是,我们需要添加一个“包括”头所以它会识别变量。对? – MichaelS

+2

是的,但这是手动工作。如果可能的话,会喜欢自动完成的答案。 – Pittfall

+0

有没有办法,我们可以在哪里给SourceDir的路径没有环境变量? –

请注意,如果您将文件添加到搜索路径中,Light将为您的文件搜索额外的SourceDir,并使用-b

light.exe -b Foo ... 

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

+0

如何从Visual Studio项目执行此操作? –

+4

在Visual Studio中:项目属性>工具设置>链接器。输入-b路径。或者,将一个LinkerBindInputPaths元素添加到您的.wixproj文件中的PropertyGroup中。 –

+0

谢谢@TomBlodget'-b MyDir'为我工作! –