SelfReg テーブル
SelfReg テーブルには、自己登録する必要があるモジュールに関する情報が含まれています。 インストーラーは、モジュールのインストール中に DllRegisterServer 関数を呼び出します。モジュールのアンインストール中 DllUnregisterServer を呼び出します。 インストーラーは EXE ファイルを自己登録しません。
SelfReg テーブルには、次の列があります。
コラム | 種類 | 鍵 | 許容 |
---|---|---|---|
ファイル_ | 識別子の | Y | N |
費用 | 整数 の | N | Y |
列
-
File_
-
ファイル テーブルの最初の列の外部キー 登録する必要があるモジュールを示します。
-
コスト
-
モジュールを登録するコスト (バイト単位)。 これは負以外の数値である必要があります。
備考
インストール パッケージの作成者は、自己登録を使用しないことを強くお勧めします。 代わりに、この目的のためにインストーラーによって提供される 1 つ以上のテーブルを作成して、モジュールを登録する必要があります。 詳細については、「レジストリ テーブル グループの 」を参照してください。 自己登録ルーチンは重要な構成情報を隠す傾向があるため、中央インストーラー サービスを使用する利点の多くは自己登録で失われます。 自己登録を回避する理由は次のとおりです。
- 自己登録されたモジュールを使用したインストールのロールバックは、DllUnregisterServer を使用して安全に行うことはできません。これは、自己登録キーが別の機能またはアプリケーションによって使用されているかどうかを示す方法がないためです。
- クラスまたは拡張サーバーの登録が自己登録ルーチン内で実行される場合、アドバタイズを使用する機能が低下します。
- インストーラーは、ユーザーごとまたはマシンごとのインストールの両方について、レジストリ テーブル内の HKCR キーを自動的に処理します。 DllRegisterServer ルーチンは現在、ユーザーごとの HKCR キーの概念をサポートしていません。
- 複数のユーザーが同じコンピューターで自己登録アプリケーションを使用している場合、各ユーザーは、アプリケーションを初めて実行する際にインストールする必要があります。 それ以外の場合、インストーラーは適切な HKCU レジストリ キーが存在することを簡単に判断できません。
- DllRegisterServer は、コンポーネントが両方ともソースからの実行として指定され、SelfReg テーブルに一覧表示されている場合、タイプ ライブラリなどのネットワーク リソースへのアクセスを拒否できます。 これにより、管理インストール中にコンポーネントのインストールが失敗する可能性があります。
- DllRegisterServerのに必要な新しいコードは DLL ごとに一般的に異なるため、自己登録 DLL はコーディング エラーの影響を受けやすくなります。 代わりに、データベース内のレジストリ テーブルを使用して、インストーラーによって提供される既存のコードを利用します。
- 自己登録 DLL は、存在しない、または間違ったバージョンの補助 DLL にリンクする場合があります。 これに対し、インストーラーは、システムの現在の状態に依存しないレジストリ テーブルを使用して DLL を登録できます。
手記
SelfRegModules および selfUnRegModules アクションを使用して、インストーラーが自己登録 DLL を登録または登録解除する順序 指定することはできません。 自己登録 の順序を指定するを参照してください。
検証