0

ArcGIS のいくつかのコマンドと自動アップデータを含むいくつかのクラス ライブラリがあります。これまで、各ライブラリにはインストーラー クラスが含まれており、すべての dll のインストールを担当する 1 つのセットアップ プロジェクトがありました。ここのように。
ツールバーを含む別のライブラリを作成しました。これには、すべてのコマンドが含まれている必要があります。プロジェクトは他のプロジェクトを参照し、AddItem(BaseToolbar基本クラスから) はAddItem(Type type)オーバーロードを使用して、文字列 (CLSID または名前) に基づくだけでなく、すべてを厳密に型指定します。
当然、Toolbar プロジェクトにはインストーラーが含まれています。すべてのコマンドのdllが確実に登録されるように、提案されたインストーラーの実装を(上記のリンクから)変更するのが良い考えかどうかを知りたかっただけです(出力フォルダーのdllファイルを繰り返し、登録しますより良い方法はありますか?)
これにより、インストールに関する問題がすべてのコマンド プロジェクトから一元化された場所に移動します。Toolbar プロジェクトからコマンドへの参照を追加するだけでよいため、この方法でコマンドを追加する方が簡単だと思います。それは理にかなっていますか、それとも、すべてのプロジェクトに個別にインストーラーを配置し、それらをセットアップ プロジェクトに 1 つずつ追加することに固執する必要がありますか?

もう 1 つ - ArcMAP 内でいくつかのコマンドがどこから来ているかを簡単に見つける方法はありますか? そこにはいくつかの奇妙なカテゴリ (このマシンの過去のユーザーによって作成されたもの) があり、削除したい古いコマンドがあります。

4

2 に答える 2

0

私はそれが理にかなっていると思います。インストーラー(Wise、installshieldなど)がインストーラーアセンブリでRegisterAssemblyとUnregisterAssemblyを呼び出すときは、すべてが正しい場所にあることを確認する必要があります。たとえば、UnregisterAssemblyを呼び出す前にアンインストールによって「コマンド」アセンブリが削除された場合、問題が発生する可能性があります。私はあなたがそれを見つけるためにそれをテストする必要があると思います。すべての「コマンド」アセンブリが使用可能になることを知っている限り、問題なく動作するようです。

また、共通のインストールコードを別の共通のアセンブリに含めて、インストーラークラスを常に実装することで解決することもできます。

于 2009-05-26T05:42:53.540 に答える