2011-12-13 20 views
12

wxsファイルを生成するために熱が流れています。コードは以下の通りです。熱が発生したファイルがSourceDirディレクトリを見つけることができません

すべてのファイルをdir.promptsからwxsファイルにインストーラーで追加します。そして、これを自動ビルドプロセスの一部として追加しました(wxsファイルが生成された後は変更できません)。

wxsファイルが生成され、次のようになります。それで、ライトはSourceDir \ Valid.wavがどこにあるのか見つけることができないと不平を言う。だから、私の質問は、SourceDirは私がファイルを読んでいるディレクトリか、私が気付いていないいくつかの魔法のディレクトリですか?どうもありがとう。

-var VariableName代替ファイル/ @出所= "SOURCEDIR"

:heat.exeヘルプから

<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スイッチを追加する必要がありますプリプロセッサまたはwix変数を使用します。たとえば:

-var var.MySource

は、File/@ソース= "$(var.MySource)\ myfile.txtの"

-varのWiXになります.MySourceが

がファイルになります/ @ソース= "!(wix.MySource)\ myfile.txtの"

+2

しかし、その後、我々はそれが変数を認識しますので、「含める」ヘッダを追加する必要があります。右? – MichaelS

+2

はい、それは手作業です。可能であれば自動的にそれを行う方法についての答えが大好きです。 – Pittfall

+0

環境変数なしでSourceDirのパスを与える方法はありますか? –

16

ライトは、検索パスに-b

などを付けて追加すると、追加のSourceDirのファイルを検索します。

light.exe -b Foo ... 

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

+0

ビジュアルスタジオプロジェクトからこれを行うにはどうすればよいですか? –

+4

Visual Studioの場合:プロジェクトのプロパティ>ツール設定>リンカ。 -bパスを入力します。または、.wixprojファイル内のPropertyGroupにLinkerBindInputPaths要素を追加します。 –

+0

ありがとう@TomBlodget '-b MyDir'が私のために働いた! –

関連する問題