2011-08-02 11 views
10

これは基本的な設定です。私はより大きなMSIに個々の断片の束を構築する既存のWIXプロジェクトを持っています。私はあなたがインストールする個々の作品を選択できるように、周りのプロジェクトを変更しようとしています。私が実行したプログラムは、個々のコンポーネントを作成するために小さなディレクトリで熱を発すると、ソースパスが正しくないということです。うまくいけば、もっと理にかなった例を挙げます。Wix発熱量がディレクトリを参照しないようにしたい

だから私はこのような基本的なフォルダ構造があります:私は単にCを収穫するコマンドに使用\ PROJDIR \ Fooの\ BAR2

C:\ PROJDIR \ Fooの\ BAR1
Cを\ Foo(Heat.exe dir Foo -dr FOO_DIR_REF -out File.wxs)、今度は個々のBarフォルダ(Heat.exe dir Foo \ Bar1 -dr BAR1_DIR_REF -out File1.wxs)を収穫するように変更しました。 (Heat.exe dir Foo \ Bar2 -dr BAR2_DIR_REF -out File2.wxs)。

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" /> 
</Component> 

そして、それはSOURCEDIR \ BAR1を見つけることができないので、それは文句MSIを構築しようとしている:私がいる問題は、収穫の出力はこのようになっていることです。基本的に私は必要なもの、それはこのようなものを見えるようにする方法です:

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" /> 
</Component> 

これは私が簡単に行われていると確信していることを、非常に単純な問題のように思えるが、私はやったすべての検索は来ていません何か役に立つもので。

答えて

13

注意

light.exe -b Foo ... 
+2

これはまさに私が必要としていたものでした。どうもありがとう。複数の-bを指定することもできます。 – Zipper

2

それが利用可能

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="$(var.ProjectName.TargetPath)\Bar1\file.here" /> 
</Component> 

異なる特性が

  • $(var.ProjectName.TargetPath)
  • $(var.ProjectName.ProjectDir)
+4

熱を利用してその方法を知っていますか?私は-var var.ProjectName.TargetPathが私に最初の部分を得ることを知っているが、私が必要とするのはBar1であり、熱からそれを行う方法は見つけられていない。手動でファイルを編集できることはわかっていますが、私はこれを自動化しています。 – Zipper

2

あるべきですあなたの質問への答えはすべてheat.exeのヘルプテキストにあります。 :-)

正確なディレクトリハーベスティングを実現するには、ルートディレクトリ(Foo)に熱を向け、コマンドラインに-srdスイッチを指定します。ヘルプテキストに記載されているように、これはroot dirハーベスティングを省略し、必要なもので終わる可能性が最も高いでしょう。

柔軟性をさらに高めるには、SourceDir明示的な文を置き換えるWiX変数を提供する-varスイッチを指定することができます。繰り返しますが、heat.exeを実行し、出力を見てください。十分な情報と例が見つかります。あなたは-b

例えばと検索パスに追加した場合lightはあなたのファイルのための追加のSourceDir年代を検索すること

関連する問題