インストールするすべてのファイルを個別のコンポーネントにラップする必要がありますか? 1つのコンポーネントに複数のファイルを配置する利点は何ですか?
「コンポーネントごとに1つのファイル」を作成する理由の1つは、 復元力 です。アプリケーションが起動すると、Windowsインストーラは、コンポーネントの keypath が欠落しているかどうかを確認できます。キーパスがない場合、コンポーネントは再インストール/修復されます。
コンポーネントに複数のファイルがある場合、1つのファイルのみをキーパスにできます。 wixでは、 File 要素にKeyPath=yes
を設定してこれを示します。他のファイルは、Windowsインストーラの復元力によって完全に保護されなくなります。キーパスファイルがなくなった場合にのみ再インストールされます。
「コンポーネントごとに1つのファイル」を使用するもう1つの理由は、ファイルがすでに存在している可能性がある場所にファイルをインストールするときです(たとえば、アプリケーションのアップグレード、またはc:\windows\system32
へのインストール時)。 Windowsインストーラーは、キーパスをチェックして、コンポーネントをインストールする必要があるかどうかを判断します。キーパスがファイルであり、ファイルがすでに存在する場合(同じバージョン以上)、コンポーネントはインストールされていません。コンポーネントのotherファイルを実際にインストール/アップグレードする必要がある場合、これは問題です。
InstallShieldでも使用されているMicrosoftのアプローチに従います。 http://msdn.Microsoft.com/en-us/library/aa368269(VS.85).aspx
上記のリンクは、このアプローチの利点を示しています。