8

BizTalk プロジェクトに取り組んでいますが、インストール (ダブルクリック) とインポート (biztalk 管理コンソールを使用) の両方が必要な理由がわかりません。

BizTalk プロジェクトがあり、そのリソースにバインディングを追加し、msi ファイルをエクスポートしました。ここで、アプリケーションを別のサーバーにインストールしたいと考えています。

私が知る限り、これは MSI インストールが行うことです。

  1. ファイルをファイル システムにコピーします。
  2. アセンブリを GAC に登録します
  3. アプリケーションを [プログラムの追加と削除] アプレットに追加します

ただし、ここに私の問題があります:

  1. msi を使用してインストールしても、アプリケーションは Biztalk 管理コンソールに追加されません。msi をインポートする必要があります。
  2. msi を使用してアンインストールしても、アセンブリは GAC から削除されません。ファイルシステムにコピーしたファイルのみを削除します。アンインストールでGACアセンブリも削除する方法はありますか?
  3. MSI をインポートするだけで、biztalk アプリケーションを開始でき、正常に動作しているようです。問題 1 と 2 を合わせて、なぜ MSI が必要なのですか? インポートするだけではGACに追加されないことがわかります。そのため、他のアプリケーションがそれに依存している場合、それらは機能しません。

msi が提供する機能/構成が欠落していると確信していますが、msi をインストールして biztalk にインポートする必要がある理由と、アンインストールしたときにインストールされたすべてのものを完全にアンインストールしない理由を誰かが理解するのを手伝ってくれませんか?

4

2 に答える 2

12

BizTalk ソリューションを展開するときは、2 つの操作を実行する必要があります。

BizTalk ソリューションの展開が 2 段階の操作である理由

  1. BizTalk ソリューションを BizTalk 管理データベースに登録する
  2. BizTalk アーティファクトと依存関係をファイル システムにインストールする

まず、ソリューションを構成する BizTalk アセンブリを BizTalk 管理データベースに登録する必要があります。これにより、BizTalk は、利用可能なスキーマ、マップ、パイプライン、およびオーケストレーションを認識できます。

これは、Windows インストーラー パッケージを BizTalk にインポートすることによって行われます。

一般的な BizTalk プラットフォームは通常、多くの物理サーバーで構成されていることに注意してください。ただし、 BizTalk グループ内のすべてのサーバーは、1 つの BizTalk 管理データベースを共有します。

したがって、インポート操作は、BizTalk グループ全体に対して 1 回実行する必要があります

次に、BizTalk に登録された BizTalk アセンブリは、物理的にどこかに存在する必要があります。したがって、ファイル システムにインストールする必要があります。

これを行うには、Windows インストーラー パッケージをダブルクリックします。

BizTalk グループの一部であるすべての物理サーバーで、インストール操作を繰り返す必要があることに注意してください。また、BizTalk 管理データベースには、ソリューションの一部であるアセンブリに関する定義が 1 つしかないため、BizTalk アセンブリをグローバル アセンブリ キャッシュ (GAC) にインストールする必要がある理由が説明されています。

ここまでのルールは単純であることに注意してください。

  • BizTalk アセンブリは、BizTalk グループ内の各サーバーの GAC にインストールする必要があります。
  • BizTalk アセンブリは、BizTalk 管理データベースに 1 回インポート (または登録) する必要があります。

ただし、BizTalk アセンブリのみを扱ってきました。BizTalk ソリューションが実行時に必要とする他のすべてのアセンブリまたはその他の依存関係 (ビジネス ルール定義、COM オブジェクト、バインディング、構成ファイルなど) は、この 2 段階の操作ではカバーされません。

環境間の展開

ただし、ソリューションの実行時には、必要に応じて、これらの依存関係が各 BizTalk サーバーにも存在する必要があります。

そのため、これらのアーティファクトのほとんどが BizTalk 管理データベースにも登録されています。ただし、今回は、BizTalk ソリューションの Windows インストーラー パッケージが作成されるときに依存関係が取り込まれ、それらの依存関係がターゲット サーバーに適切にインストールされるようにするためだけに行われます。

アンインストール時に BizTalk アセンブリが GAC から削除されないのはなぜですか?

一般的な経験則として、グローバル アセンブリ キャッシュに登録されているアセンブリは共有リソースと見なされます。したがって、安全上の理由から、BizTalk アセンブリはアンインストール時に GAC から削除されません。カスタム BizTalk パイプラインが複数のアプリケーションで使用されるとどうなるかを考えてみてください。その場合、BizTalk パイプラインは、別個の共通の BizTalk アプリケーションの一部である必要があります。この共有 BizTalk アプリケーションをアンインストールすると、このパイプラインに依存する他のすべてのアプリケーションが壊れてしまいます...

リソースを BizTalk 管理データベース に追加する場合、インポート時またはインストール時にアセンブリを GAC にインストールするかを選択できます。「 GacOnImport」機能を使用しないことを強くお勧めします。これは、ほとんどの典型的なマルチサーバー BizTalk グループでは意味がありません

ただし、Windows インストーラー パッケージに関して、BizTalk アセンブリまたはその他の依存関係に対して実行できることをカスタマイズする、より簡単で柔軟な方法があります。これは、前処理スクリプトと後処理スクリプトで行われます。

これらのスクリプトを使用すると、インポート/インストール操作中の特定の 4 回に任意のアプリケーションを実行できます。

  • インポートする前に
  • インポート後
  • 取り付ける前に
  • 取り付け後

アンインストール時に GAC からアセンブリを削除する場合は、操作の「インストール前」フェーズで適切なコマンドラインをスケジュールするだけです。

于 2011-02-05T18:04:31.677 に答える
9

MSIファイルをインポートすると、アセンブリがMSIからBizTalkデータベースに追加されます。あなたが述べたように、MSIを実行するとアセンブリがGACに追加されます。どちらも、BizTalkアプリケーションを「インストール」するために必要です。BizTalk管理データベースにインポートする必要があるのはBizTalkアセンブリのみです。BizTalkで使用されるすべてのDLLはGACに含まれている必要があります。

http://msdn.microsoft.com/en-us/library/aa578463(v=BTS.10).aspxを調べて、各リソースのインストールとインポートの動作をカスタマイズできることを確認することをお勧めします。 BizTalkアプリケーション。これにより、MSIのみをインポートし、アセンブリをデータベースに追加してGACにインストールするだけで、[プログラムの追加と削除]を煩雑にする必要がなくなります。

インストールされたMSIをアンインストールしたときにDLLがGACから削除されない理由については、これは仕様によるものであると言えます。MSDN http://msdn.microsoft.com/en-us/library/aa562001(v=bts.10).aspxのこのページを見ると、この動作が期待どおりに記述されていることがわかります。このMSDNの記事には、GACからアセンブリを削除する方法のリンクも含まれています。このリンクでは、後処理スクリプトを使用して、MSIのアンインストール時にMSIが実際にアセンブリをGACから削除する方法について説明しています。

于 2011-02-05T06:00:45.940 に答える