web-dev-qa-db-ja.com

ディレクトリ全体またはプロジェクト出力をWiXパッケージに追加する方法

VS統合セットアップからWiXに切り替えることにしました。

ただし、現在行っていることは、プロジェクト出力ファイルをセットアッププロジェクトの入力として使用することです。これにより、アプリケーションファイルをディレクトリ(イメージ、サンプル、その他のリソース用)に簡単に追加でき、これらのファイルはビルド時に自動的にセットアップに追加されます。

WiXで同様の機能を見つけることができませんでした。 WiXでは、ディレクトリとファイルごとに1つのディレクトリエントリと1つのファイルエントリが必要なようです。これには、ファイルが追加されるたびにWiXソースを変更する必要があります。ファイルの数が非常に多いため、私の目には禁止されています。

WiXでそれを行う統合された方法はありますか、またはキャンドルを呼び出す前にWiXソースを作成する独自のタスクを記述する必要がありますか?

52
Coincoin

WiX 2.0の場合、獣脂は非常に限られています。パラフィンとゼニアオイは、追加の機能を提供します。 WiX 3.0の場合、heatはtallowと同じ機能を提供しますが、少し優れています。

私の場合、パラフィンには3.5バージョンの.Netが必要なため、アオイ科の植物のソースを使用し、少し変更して使用しました。

Mallow を使用できます

またはWiXフラグメントを生成するためのパラフィンツール: Getting startedWiXの痛みより良い獣脂、パラフィンダウンロード =、 WiX 3.0のパラフィン

24

私はその目的のためだけにWIX 3.5でheat.exeを使用しています。前回チェックしたとき、 documentation は3.5リリースでは最新のものではなかったので、覚えておいてください。

次に例を示します。

"$(WIX)bin\heat.exe" dir "$(SourcePath)" -cg MyFiles -gg -scom -sreg -sfrag -dr INSTALLDIR -out "$(ProjectDir)Fragments\FileFragment.wxs" -var wix.InstallerPath

19
stankovski

MapGuide Open Sourceプロジェクトは現在、John Robbinsの Paraffin 3. を使用しています。

基本的に、特定のリリースバージョンの最初から最後まで、インストーラースクリプトを「 generate 」アクションで実行し、ソースフォルダー用に新しい.wxsファイルを作成し、それぞれに特定のオプションを指定します。

同じバージョンの後続のビルドでは、「 regen 」アクションが呼び出され、追加された新しいファイル/ディレクトリで.wxsファイルが確実に更新されます。

Brian Rogersが書いている のように、Heat v3でもこれの多く(またはおそらくすべて?)を実行できるようになったと思います。静的なGUIDを維持することでParaffinがこれをより明示的に行う方法にはまだ満足していますが、現在のHeatは良いオプションのように見えます。

4
JasonBirch

さらなる調査の後、それを行うtallow.exeと呼ばれるバイナリが含まれているようです。ファイルを再帰的に検索して、ディレクトリからフラグメントを作成します。

2
Coincoin

私がWIXを使用しているときに、一度にファイルのディレクトリ全体を追加できる機能に出会ったことはありません。これは、特定のファイルを使用できる多くの方法があるためです(システムは、そのフォルダー内の特定のファイルなどを後で参照するかどうかを認識していないため、それらを知る必要があります)。また、インストール自体はかなり具体的である必要があるためです。

これは、ディレクトリ構造の内容を解析した後にWIX XMLファイル(またはその一部)を生成するWIXの独自のフロントエンドを作成することを妨げるものではありません。それが基本的に私が仕事で使用しているシステムの1つです。これは、他のコードやテキストファイル生成ユーティリティと同じ考え方です。ツリーをトラバースし、適切なテキストを生成します。

編集:そのようにして、WIXをセットアップを定義するための「低水準言語」と見なし、ユーティリティを「高水準言語」と見なすことができます。あなたがそれを書くのに助けが必要な場合は、私たちに知らせてください。

また、このユーティリティをVStudioのカスタムビルドステップに追加することにより、ビルドプロセスの一部としてWIXファイルを生成することができます。そうすれば、実際に誰もが作成する「保存されたWIXファイル」がなく、システムは最後にそれを作成するだけで、ビルド後のステップで新しいファイルが自動的に考慮されます。

0
EdgarVerona