3

クライアント/サーバーアプリケーション用のインストールパッケージをいくつか作成しています。私はWixToolkitを使用していますが、推奨されているように、各DLLは一意のIDを持つ独自のコンポーネントとしてラップされています。

両方のパッケージにインストールする必要があるいくつかの一般的なDLLがあります。これらのDLLには同じコンポーネントGUIDが必要ですか、それともパッケージごとに異なる必要がありますか?

4

2 に答える 2

5

私のコメントに対するあなたの返事を考えると、クライアントとサーバーの両方が同じマシンにインストールされていると、事態は特に悪くなります。

Windowsインストーラコンポーネントから:

同じコンポーネントIDを共有する2つのコンポーネントは、実際のコンテンツに関係なく、同じコンポーネントの複数のインスタンスとして扱われます。ユーザーのコンピューターには、コンポーネントの1つのインスタンスのみがインストールされます。

(強調が追加されました)。

プラス:

  • 各コンポーネントは、単一のフォルダーに保存する必要があります。

次の箇条書きは、これらと矛盾しているように聞こえるかもしれません。

  • ファイル、レジストリエントリ、ショートカット、またはその他のリソースを複数のコンポーネントのメンバーとして出荷しないでください。

しかし、実際には逆のことを言っています。同じDLLを同じ場所にインストールする2つのインストーラーがある場合、それらは同じコンポーネントの一部である必要があります。重要なのは、ファイルの場所(およびその名前とその中のビット、バージョンなど)です。


Re:私の答えの最初の行、そしてあなたが何をしようとしているのかを考えると-サーバーがインストールされ(サーバーディレクトリにDLL)、次にクライアントがインストールされた場合、DLLはGACに存在しないため、クライアントアプリは機能しません。

于 2012-06-01T13:54:47.880 に答える
1

インストールされているコンポーネントは、GUIDとキーパスによって識別されます。

両方のパッケージがコンポーネントを同じ場所にインストールする場合、コンポーネントが正しく参照カウントされるように、両方のパッケージが同じGUIDを使用することが重要です。

両方のパッケージがコンポーネントを異なる場所にインストールする場合、キーパスが異なるため、いずれの場合も別々に管理されます。この場合、GUIDが同じであるかどうかは関係ありません。

結論:GUIDを同じに保つ必要があります

余談ですが、wixは、コンポーネント定義をwixlibにコンパイルし、そのwixlibをさまざまなインストーラーパッケージの構築に使用することで、コンポーネント定義を共有することをお勧めします。これは、DLLを作成し、そのDLLをさまざまなアプリケーションで使用する方法に似ています。

GUIDの質問は、wixlibを使用している場合でも出てきません。これは、GUIDを別のパッケージに変更できる場所がないためです。

于 2012-06-01T22:01:52.980 に答える