次の方法で共有


VSPackage の登録

VSPackage は、インストールされていて読み込む必要があることを Visual Studio に推奨する必要があります。 このプロセスは、レジストリに情報を書き込むことで実現されます。 これは、インストーラーの一般的なジョブです。

自己登録を使用することは、VSPackage 開発時に受け入れ可能なプラクティスです。 ただし、Visual Studio Industry Partner (VSIP) プログラム パートナーは、セットアップの一部として自己登録を使用して製品を出荷することはできません。

Windows インストーラー パッケージのレジストリ エントリは、通常、レジストリ テーブルで作成されます。 レジストリ テーブルにファイル拡張子を登録することもできます。 ただし、Windows インストーラーでは、プログラム識別子 (ProgId)、クラス、拡張機能、および動詞テーブルを通じて組み込みのサポートが提供されます。 詳細については、「 データベース テーブル」を参照してください。

レジストリ エントリが、選択したサイド バイ サイド戦略に適したコンポーネントに関連付けられていることを確認します。 たとえば、共有ファイルのレジストリ エントリは、そのファイルの Windows インストーラー コンポーネントに関連付ける必要があります。 同様に、バージョン固有のファイルのレジストリ エントリも、そのファイルのコンポーネントに関連付ける必要があります。 そうしないと、あるバージョンの Visual Studio に対して VSPackage をインストールまたはアンインストールすると、他のバージョンの VSPackage が壊れる可能性があります。 詳細については、「 Visual Studio の複数バージョンのサポート」を参照してください。

登録を管理する最も簡単な方法は、開発者登録とインストール時登録の両方に同じファイル内の同じデータを使用することです。 たとえば、一部のインストーラー開発ツールでは、ビルド時にファイルを.reg形式で使用できます。 開発者が日々の開発とデバッグのために.regファイルを維持している場合、それらの同じファイルをインストーラーに自動的に含めることができます。 登録データを自動的に共有できない場合は、インストーラーの登録データのコピーが最新であることを確認する必要があります。

アンマネージド VSPackage の登録

アンマネージド VSPackage (Visual Studio パッケージ テンプレートによって生成されたものを含む) は、ATL スタイルの .rgs ファイルを使用して登録情報を格納します。 .rgs ファイル形式は ATL に固有であり、通常、インストール作成ツール as-is 使用することはできません。 VSPackage インストーラーの登録情報は、個別に管理する必要があります。 たとえば、開発者は.rgsファイルの変更に合わせて、.reg形式のファイルを同期することができます。 .reg ファイルは、開発作業のために RegEdit とマージすることも、インストーラーによって使用することもできます。

マネージド VSPackage の登録

RegPkg ツールは、マネージド VSPackage から登録属性を読み取り、情報をレジストリに直接書き込むか、インストーラーで使用できる.reg形式のファイルを書き込むことができます。

RegPkg ツールは再頒布可能ではなく、ユーザーのシステムに VSPackage を登録するために使用できません。

VSPackage をインストール時に Self-Register しない理由

VSPackage インストーラーは自己登録に依存しないようにする必要があります。 一見すると、VSPackage のレジストリ値を VSPackage 自体にのみ保持することをお勧めします。 開発者が日常的な作業とテストに使用できるレジストリ値が必要な場合は、インストーラーでレジストリ データの別のコピーを保持しないようにするのが理にかなっています。 インストーラーは、VSPackage 自体に依存してレジストリ値を書き込むことができます。

理論上は良好ですが、自己登録には、VSPackage のインストールに適さないいくつかの欠陥があります。

  • インストール、アンインストール、インストールのロールバック、アンインストールのロールバックを正しくサポートするには、RegPkg を呼び出して自己登録するすべてのマネージド VSPackage に対して 4 つのカスタム アクションを作成する必要があります。

  • サイド バイ サイド サポートのアプローチでは、サポートされているすべてのバージョンの Visual Studio に対して RegSvr32 または RegPkg を呼び出す 4 つのカスタム アクションを作成することが必要になる場合があります。

  • 自己登録されたモジュールを含むインストールは、自己登録キーが別の機能またはアプリケーションによって使用されているかどうかを示す方法がないため、安全にロールバックできません。

  • 自己登録 DLL は、存在しない、または間違ったバージョンの補助 DLL にリンクする場合があります。 これに対し、Windows インストーラーでは、システムの現在の状態に依存しないレジストリ テーブルを使用して DLL を登録できます。

  • 自己登録コードは、コンポーネントが両方ともソースからの実行として指定され、SelfReg テーブルに一覧表示されている場合、タイプ ライブラリなどのネットワーク リソースへのアクセスを拒否できます。 これにより、管理インストール中にコンポーネントのインストールが失敗する可能性があります。