ソースファイルの指定

WiX は、セットアップパッケージのペイロード - セットアップにインクルードされ ユーザーのマシンにインストールされるファイル - を特定するのに二通りの方式を提供しています。

(訳注: payload 有料荷重の意味から、ITでは "データ本体" を指すらしいです。)

コンパイル、リンク、バインド

WiX ツールセットは、書かれた物がどのようにビルドされるか、WiXソースオーサリングを オブジェクトファイルに構文解析するコンパイラーと オブジェクトファイルを出力ファイルにする リンカーとで、典型的なC/C++コンパイラーをモデルにしています。WiX については 出力は、 .msi パッケージ、.msm マージモジュール、あるいは、3番目のフェーズ つまり ペイロードファイル を出力にバインドする事 を持つ .wixlib ライブラリー、です。Light.exe は、リンカーとバインダー の両方をインクルードしています。

WiX ソースオーサリングはペイロードファイルを参照するけれど、コンパイラーは決してそれらには 注意を向けません。その代わりに バインダーが、それらを含むキャビネットファイルを作成したり 展開されたレイアウトにコピーする時に そうします。

バインダーに、ファイルを探すのに使う base input path を1つあるいはもっと多く 与える事ができます。それは カレント作業ディレクトリーに関するファイルも探します。 Light.exe の -b スイッチと BaseInputPaths .wixproj プロパティは 1つあるいはもっと多くの base input path を指定する事を可能にします。

名前とディレクトリーツリーによる ファイルの特定

File/@Name アトリビュートを使って File/@Source アトリビュートを使っていない時、 コンパイラーは、ファイルの親コンポーネントディレクトリー プラス 与えた名前 に基づいて ファイルへの暗黙のパスを組み立てます。それで、例えば、部分的なオーサリングが示され

<Directory Id="TARGETDIR">
<Directory Name="foo">
<Directory Name="bar">
<Component>
<File Name="baz.txt" />

バインダーは、base input path 中でファイル foo\bar\baz.txt を探します。

暗黙のペイロードディレクトリーのオーバーライド

Directory DirectoryRef エレメントの FileSource アトリビュートは、そのディレクトリーや子ディレクトリー中のファイルのために 新しいディレクトリーをセットします。例えば、部分的なオーサリングが示され

<Directory Id="TARGETDIR">
<Directory Name="foo" FileSource="build\retail\x86">
<Directory Name="bar">
<Component>
<File Name="baz.txt" />

バインダーは、base input path 中でファイル build\retail\x86\bar\baz.txt を探します 。

FileSource アトリビュートは、プリプロセッサー変数と環境変数を使う事ができます。もし 値が絶対パスなら、バインダーの base input path は使用されません。

使用された方がよい

もし ペイロードソースに使っているビルドツリーが インストールイメージのツリーに ほとんど そっくり同じで 中程度〜深い ディレクトリーツリーを持っているなら、暗黙のパスの使用は オーサリングでの繰り返しを避けるでしょう。

ソースディレクトリー

Directory/@SourceName アトリビュートは、Light.exe がファイルを探すディレクトリー名と .msi パッケージ中の "source directory" の両方を コントロールします。ソースディレクトリーも コントロールしたい場合を除いて、FileSource だけを使って下さい。

ソースファイルによる ペイロードの特定

File/@Source アトリビュートは、ペイロードファイルへのパスです。それは、絶対パス あるいは base input path のどれかに相対的 であり得ます。もし File/@Source が存在すると、 Directory/@Name、Directory/@FileSource、File/@Name によって作成された暗黙のパス に優先します。

もし File/@Source を指定すると、File/@Name を省略できます。なぜなら、コンパイラーがそれを 自動的に ソースパスのファイル名部分にセットする からです。

使用された方がよい

もし ペイロードソースに使っているビルドツリーが インストールイメージのツリーと異なっている なら、File/@Source の使用は、.msi パッケージのディレクトリーツリーと違うのに比べて 明示的 パスを捜し出すのを 容易にします。File/@Source パスを縮めるのに 複数の base input path を使う 事ができます。

例えば、WiX セットアップ .wixproj プロジェクトは、WiX がサポートする x86、x64、ia64 プラット フォーム用アウトプットツリーと WiX ソースツリーを教えます。ユニークなファイル名は それらの ファイル名だけで参照され得ます。すなわち、プラットフォームをまたいで同じ名前を持つファイルは 相対パスを使います。

例として src\Setup\*.wxs 中の WiX オーサリングを見て下さい。