FAQ
ArcGIS 10 で旧バージョンのコンポーネントを登録する方法

ナレッジ番号:2536 | 登録日:2023/05/29 | 更新日:2024/07/05

【概要】
ここでは、ArcGIS 開発者向けに、ArcGIS 10 で旧バージョンのコンポーネントを登録する方法について解説します。

 

Image  次の手順は、移行の目的においてのみ適用されます。基本的には、開発者が新バージョンのリリースごとにカスタム コンポーネントをリコンパイル、再配布することを推奨します。

 

尚、以下のワークフローについてのサポートを提供していません。

開発者は、新しいバージョンで古いコンポーネントを正常に動作させるために、入念なテストと検証を行ってください。

以下の手順が正しく動作しなかった場合、コンポーネントはサポートされた開発環境でリコンパイルしてください。

ArcGIS 10 の以前のリリースでは、開発者は ArcGIS 用のコンポーネントを作成し、それらをカスタマイズのタイプに基づき、特定のコンポーネント オブジェクト モデル(COM)カテゴリに登録していました。ArcGIS アプリケーションは、それらの COM カテゴリに基づき、起動時に適切なコンポーネントを読み込んでいました。カスタム コンポーネントは、ArcGIS のインストールとは別に登録されるため、ArcGIS をアンインストールしてもそれらは削除されません。そのため、エンドユーザが新しいバージョンにアップグレードした際に、コンポーネントは ArcGIS によって自動的に読み込まれます。

多くの開発者は、この機能を活用して複数バージョンに及ぶカスタム コンポーネントを作成していました。弊社は、この手法をサポートまたは推奨しておらず、各バージョンの製品において、すべてのカスタム コンポーネントをリコンパイルし、十分に検証することを推奨しています。機能はリリースごとに変更されているため、開発者はカスタム ソリューションを再検証および再配布し、ソフトウェアの新しいバージョンで正常に動作するかどうか確認することが重要です。また開発者は、カスタマイズの設計と実装を見直し、最新バージョンの機能を活用できていることを確認することが重要です。

バージョン 10 では、ArcGIS はカスタム コンポーネントをロードするためにシステム レジストリを読み込まなくなりました。RegSvr32.exe(ネイティブ コード用)や RegAsm.exe(マネージ コード用)を使用して、または別のレジストリ登録方法(例えば .reg ファイルの使用など)を使用してカテゴリに登録されたコンポーネントは、ArcGIS によって読み込まれなくなりました。代わりに、開発者は ESRIRegAsm.exe を使用してコンポーネントの登録を行います。このユーティリティは、.dll の登録や構成ファイル(.ecfg)の作成によるカテゴリ情報を取り扱います。構成ファイルは、ArcGIS アプリケーション実行時に、カスタム コンポーネントをロードするために読み込まれます。これは、適切な製品およびバージョンの構成フォルダに配置されなければなりません。たとえば、ArcGIS 10 Desktop のカスタマイズの場合は、次の場所に配置します。

%CommonProgramFiles%\ArcGIS\Desktop10.0\Configuration\CATID

弊社は、多くのユーザがバージョンごとに常に動作する古いコンポーネントを持っていることを認識しています。

次の手順では、ArcGIS 10 で旧バージョンのコンポーネントを登録する方法について説明し、バージョン移行中に、これらのコンポーネントをユーザが継続して使用できるようにします。

【手順】
ArcGIS では、登録される 2 種類の DLL があります。それ自身をコンポーネント カテゴリに登録するもの(C++ や .NET)と、そうでないもの(VB6 DLL)です。いずれも、ArcGIS がこれらのカスタマイズを読み込むために、構成 ファイル(.ecfg)を必要とします。

この構成ファイルは、セットアップ プログラムを使用してコンピュータに配置することができます。あるいは、パッチの中に含めることもできます。

 

Image 次のすべてのワークフローにおいて、DLL がシステムに登録されなければなりません。ESRIRegAsm.exe は、開発者のコンピュータでこの処理を行います。配布の際は、セットアップ プログラム内でコンポーネントを登録しなければなりません。この手順は、特にカテゴリ登録を追加するために使用されます。

・コンポーネントがカテゴリ登録をサポートする言語で記述されていた場合、コンポーネントは ESRIRegAsm.exe を使用して登録することができます。下記の例は、ArcGIS Desktop で DLL を登録する方法です。

%CommonProgramFiles%\ArcGIS\Bin\ESRIRegAsm /p:Desktop "C:\Program\MyDll.dll"

Image  ArcGIS に付属のポリシーファイルは .NET 開発者向けに提供されなくなりました。.NET で記述された古いコンポーネントは、app.config ファイルを使用してアセンブリを適切なバージョンにリダイレクトするため、ArcGIS アプリケーションで動作するはずです。コンポーネントを使用する Engine 開発者は、実行ファイル用に、それ自身のアプリケーション構成ファイルを作成する必要があります。

DLL がカテゴリ登録をサポートしない場合、たとえばレジストリ スクリプトがカテゴリ情報を提供するために登録後に使用された、もしくは開発者が .reg ファイルを使用してそれらのコンポーネントを登録した場合、開発者は引き続き、カテゴリ情報の登録のためにこの方法を利用することができます。

たとえば、下記はカスタムの [拡大] コマンドを ESRI Mx Commands カテゴリに追加するレジストリ ファイルです。

 REGEDIT4
; Coclass: prjDisplay.ZoomIn
; CLSID: {FC7EC05F-6B1B-4A59-B8A2-37CE33738728}
; Component Category: ESRI Mx Commands
{HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FC7EC05F-6B1B-4A59-B8A2-37CE33738728}
\Implemented Categories\{B56A7C42-83D4-11D2-A2E9-080009B6F22B}]

以下の構文により、.reg ファイルが ESRIRegAsm によって直接使用され、.ecfg 構成ファイルを作成します。

%CommonProgramFiles%\ArcGIS\Bin\ESRIRegAsm /p:Desktop "C:\Program\MyDll.dll" /f:"C:\Progam\myRegFile.reg"

・別の登録メカニズムが使用された場合、開発者が .xml 構成ファイルを作成するオプションもあります。このファイルは、後に ESRIRegAsm ユーティリティ で .ecfg ファイルを作成するために使用できます。

たとえば、上記と同じコマンドを使用して、メモ帳(Notepad.exe )あるいは XML エディタを使用して以下の構文を含んだ XML ファイルを作成することができます。

<Categories>
   <Category CATID="{B56A7C42-83D4-11D2-A2E9-080009B6F22B}">
      <Class CLSID="{FC7EC05F-6B1B-4A59-B8A2-37CE33738728}" />
   </Category>
</Categories>

Config.xml としてこのファイルを保存します。この XML 構成ファイルを /f: パラメータに渡して ESRI Regasm を実行します。

%CommonProgramFiles%\ArcGIS\Bin\ESRIRegAsm /p:Desktop "C:\Program\MyDll.dll" /f:"C:\Progam\Config.xml"

 

備考:
プラットフォーム:N/A
ESRI Article ID : 37639

メタデータ

種類

製品

バージョン