クライアント/サーバーアプリケーション用のインストールパッケージをいくつか作成しています。私はWixToolkitを使用していますが、推奨されているように、各DLLは一意のIDを持つ独自のコンポーネントとしてラップされています。
両方のパッケージにインストールする必要があるいくつかの一般的なDLLがあります。これらのDLLには同じコンポーネントGUIDが必要ですか、それともパッケージごとに異なる必要がありますか?
クライアント/サーバーアプリケーション用のインストールパッケージをいくつか作成しています。私はWixToolkitを使用していますが、推奨されているように、各DLLは一意のIDを持つ独自のコンポーネントとしてラップされています。
両方のパッケージにインストールする必要があるいくつかの一般的なDLLがあります。これらのDLLには同じコンポーネントGUIDが必要ですか、それともパッケージごとに異なる必要がありますか?
私のコメントに対するあなたの返事を考えると、クライアントとサーバーの両方が同じマシンにインストールされていると、事態は特に悪くなります。
同じコンポーネントIDを共有する2つのコンポーネントは、実際のコンテンツに関係なく、同じコンポーネントの複数のインスタンスとして扱われます。ユーザーのコンピューターには、コンポーネントの1つのインスタンスのみがインストールされます。
(強調が追加されました)。
プラス:
- 各コンポーネントは、単一のフォルダーに保存する必要があります。
次の箇条書きは、これらと矛盾しているように聞こえるかもしれません。
- ファイル、レジストリエントリ、ショートカット、またはその他のリソースを複数のコンポーネントのメンバーとして出荷しないでください。
しかし、実際には逆のことを言っています。同じDLLを同じ場所にインストールする2つのインストーラーがある場合、それらは同じコンポーネントの一部である必要があります。重要なのは、ファイルの場所(およびその名前とその中のビット、バージョンなど)です。
Re:私の答えの最初の行、そしてあなたが何をしようとしているのかを考えると-サーバーがインストールされ(サーバーディレクトリにDLL)、次にクライアントがインストールされた場合、DLLはGACに存在しないため、クライアントアプリは機能しません。
インストールされているコンポーネントは、GUIDとキーパスによって識別されます。
両方のパッケージがコンポーネントを同じ場所にインストールする場合、コンポーネントが正しく参照カウントされるように、両方のパッケージが同じGUIDを使用することが重要です。
両方のパッケージがコンポーネントを異なる場所にインストールする場合、キーパスが異なるため、いずれの場合も別々に管理されます。この場合、GUIDが同じであるかどうかは関係ありません。
結論:GUIDを同じに保つ必要があります。
余談ですが、wixは、コンポーネント定義をwixlibにコンパイルし、そのwixlibをさまざまなインストーラーパッケージの構築に使用することで、コンポーネント定義を共有することをお勧めします。これは、DLLを作成し、そのDLLをさまざまなアプリケーションで使用する方法に似ています。
GUIDの質問は、wixlibを使用している場合でも出てきません。これは、GUIDを別のパッケージに変更できる場所がないためです。