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