作成した Web サイトのインストーラーを作成しようとしています。WiX チュートリアルでは、「繰り返しますが、コンポーネントには、常に一緒にインストールまたは削除する必要があるほど強く一緒に属しているアイテムのみを含める必要があります。」と書かれています。ウェブサイト全体がこの説明に当てはまると思います。コンポーネントに関して 2 つの問題があります。1つ目は、明らかに私のWebサイトには多くのディレクトリがあり、すべてのディレクトリ/ファイルを1つのコンポーネントに入れる方法がわかりません(これは可能ですか?)。また、プログラムからコンポーネントを生成する場合、GUIDはほぼ確実に必要です。ビルドごとに異なるため、リリースごとにメジャー バージョンの変更が強制されますか? 足りないものはありますか?
3 に答える
コンポーネントのファイルは複数のディレクトリにまたがることはできません。Windows インストーラーの制限。安定したコンポーネント ID を取得するのは難しい問題ですが、これを処理できる WiX v3 の新しいトリックがいくつかあります。Component/@Guid="*" がコツです。(先週のように) 新しい heat.exe は、ニーズを満たすと思われるフラグメントを生成します。
私の WIX での経験はかなり限られていることを、前もって認めなければなりません。ただし、コンポーネントは、ファイルや dll などの単一のインストール可能なものにマップされているという印象を受けました。これらはコンポーネント グループに配置され、機能に追加されます。機能とは、コア、ドキュメント、サンプルなど、ユニットとしてインストールされるものです。この場合、常に Core コンポーネントが必要になりますが、ドキュメントと例の機能は省略できます。
コンポーネントの GUID を変更しても、メジャー バージョン番号の変更が強制されるとは思いません。
学習曲線がかなり急勾配になる可能性があるため、私自身、WIX を使用するのに苦労しました。これが役立つことを願っています。
これを経験したので、ここに私のアドバイスがあります:
- 各ファイルには独自のコンポーネントが必要です。
- ステップ 1. に従えば、Rob が言うように、各コンポーネントは属性GUID="*"を持つことができます
- ComponentGroup はあなたの友達です :)
- ProductCode を * に設定し、UpgradeCode を固定 GUID のままにしておく場合、MSI は新しいインストール インストーラーとアップグレード インストーラーの両方であるため、アップグレードごとに新しいアップグレード インストーラーを作成する必要はありません。これを制御するには、Upgrade 要素と UpgradeVersion 要素を理解する必要があります。
ここでさらにいくつかのトリック。