Udostępnij za pośrednictwem


Tabela SelfReg

Tabela SelfReg zawiera informacje o modułach, które muszą być zarejestrowane samodzielnie. Instalator wywołuje funkcję DllRegisterServer podczas instalacji modułu; wywołuje DllUnregisterServer podczas odinstalowywania modułu. Instalator nie rejestruje samodzielnie plików EXE.

Tabela SelfReg zawiera następujące kolumny.

Kolumna Typ Klucz Nullable
Plik_ identyfikator Y N
Koszt liczba całkowita N Y

 

Kolumny

File_

Klucz zewnętrzny w pierwszej kolumnie tabeli Plik wskazujący moduł, który należy zarejestrować.

koszt

Koszt rejestrowania modułu w bajtach. Musi to być liczba nieujemna.

Uwagi

Autorzy pakietów instalacyjnych zdecydowanie zaleca się korzystanie z rejestracji samodzielnej. Zamiast tego powinny rejestrować moduły, tworząc co najmniej jedną tabelę udostępnioną przez instalatora w tym celu. Aby uzyskać więcej informacji, zobacz Registry Tables Group. Wiele zalet posiadania centralnej usługi instalatora jest utraconych w przypadku samodzielnej rejestracji, ponieważ procedury samodzielnej rejestracji mają tendencję do ukrywania krytycznych informacji o konfiguracji. Przyczyny unikania samodzielnej rejestracji obejmują:

  • Wycofanie instalacji z własnymi modułami nie można bezpiecznie wykonać przy użyciu DllUnregisterServer, ponieważ nie ma możliwości poinformowania, czy klucze zarejestrowane samodzielnie są używane przez inną funkcję lub aplikację.
  • Możliwość używania anonsu jest ograniczona, jeśli rejestracja klasy lub serwera rozszerzenia jest wykonywana w ramach procedur samodzielnej rejestracji.
  • Instalator automatycznie obsługuje klucze HKCR w tabelach rejestru zarówno dla poszczególnych użytkowników, jak i instalacji na maszynę. dllRegisterServer procedury obecnie nie obsługują pojęcia klucza HKCR dla użytkownika.
  • Jeśli wielu użytkowników korzysta z aplikacji zarejestrowanej samodzielnie na tym samym komputerze, każdy użytkownik musi zainstalować aplikację przy pierwszym uruchomieniu. W przeciwnym razie instalator nie może łatwo ustalić, czy istnieją odpowiednie klucze rejestru HKCU.
  • DllRegisterServer można odmówić dostępu do zasobów sieciowych, takich jak biblioteki typów, jeśli składnik jest określony jako element run-from-source i jest wymieniony w tabeli SelfReg. Może to spowodować niepowodzenie instalacji składnika podczas instalacji administracyjnej.
  • Samorejestrujące biblioteki DLL są bardziej podatne na błędy kodowania, ponieważ nowy kod wymagany do dllRegisterServer jest często inny dla każdej biblioteki DLL. Zamiast tego użyj tabel rejestru w bazie danych, aby skorzystać z istniejącego kodu dostarczonego przez instalatora.
  • Biblioteki DLL rejestrujące się samodzielnie mogą czasami łączyć się z pomocniczymi bibliotekami DLL, które nie są obecne lub są niewłaściwą wersją. Z kolei instalator może zarejestrować biblioteki DLL przy użyciu tabel rejestru bez zależności od bieżącego stanu systemu.

Nuta

Nie można określić kolejności rejestrowania lub wyrejestrowania bibliotek DLL przez instalator przy użyciu SelfRegModules i akcji SelfUnRegModules. Zobacz Określanie kolejności rejestracji samodzielnej.

 

Walidacja

ICE03
ICE06
ICE32