2011-12-13 73 views
12

我正在運行生成一個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> 

回答

11

您應該添加-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的路徑沒有環境變量? –

16

請注意,如果您將文件添加到搜索路徑中,Light將爲您的文件搜索額外的SourceDir,並使用-b

light.exe -b Foo ... 

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

+0

如何從Visual Studio項目執行此操作? –

+4

在Visual Studio中:項目屬性>工具設置>鏈接器。輸入-b路徑。或者,將一個LinkerBindInputPaths元素添加到您的.wixproj文件中的PropertyGroup中。 –

+0

謝謝@TomBlodget'-b MyDir'爲我工作! –

相關問題