Freigeben über


Isolierte Komponenten

Autoren von Installationspaketen können angeben, dass das Installationsprogramm die freigegebenen Dateien (häufig freigegebene DLLs) einer Anwendung in den Ordner dieser Anwendung und nicht in einen freigegebenen Speicherort kopiert. Diese private Gruppe von Dateien (DLLs) werden dann nur von der Anwendung verwendet. Das Isolieren der Anwendung zusammen mit den gemeinsam genutzten Komponenten auf diese Weise hat die folgenden Vorteile:

  • Die Anwendung verwendet immer die Versionen der freigegebenen Dateien, mit denen sie bereitgestellt wurde.
  • Durch die Installation der Anwendung werden andere Versionen der freigegebenen Dateien von anderen Anwendungen nicht überschrieben.
  • Nachfolgende Installationen anderer Anwendungen mit unterschiedlichen Versionen der freigegebenen Dateien können die von dieser Anwendung verwendeten Dateien nicht überschreiben.

Da die aktuelle Implementierung von COM einen einzigen vollständigen Pfad in der Registrierung für jedes CLSID/Context-Paar behält, erzwingt es alle Anwendungen, dieselbe Version einer freigegebenen DLL zu verwenden. Damit eine Anwendung eine private Kopie eines COM-Servers beibehalten kann, sucht das Systemladeprogramm in Windows 2000 nach dem Vorhandensein eines . LOKALE Datei im Ordner der Anwendung. Wenn das Systemladeprogramm eine . Local file, it alter its search logic to prefer DLLs located in the same folder as the application.

Wenn Windows Installer die IsolateComponents-Aktion ausführt, sie die Dateien der Komponente (häufig eine freigegebene DLL) kopieren, die in der Spalte Component_Shared der IsolatedComponent-Tabelle angegeben ist, in denselben Ordner wie die Komponente (häufig eine .exe Datei), die in der spalte Component_Application angegeben ist. Das Installationsprogramm erstellt eine Datei in diesem Verzeichnis, null Byte länge, wobei der kurze Dateiname der Schlüsseldatei für Component_Application (in der Regel der Name ist identisch mit der .exeder Anwendung) angefügt. LOKAL. Das Installationsprogramm verwendet die Registrierung für die Komponente an seinem freigegebenen Speicherort und schreibt keine Registrierungsinformationen für die Kopie der Komponente am privaten Speicherort.

Weitere Informationen finden Sie unter: