Installieren von Win32-Assemblys für die side-by-Side-Freigabe

Im Folgenden wird beschrieben, wie Sie ein Windows Installer-Paket erstellen, um eine Win32-Assembly zu installieren. Das Paket installiert eine parallele Assembly im Ordner Winsxs für die gemeinsame Verwendung der Anwendung. Nach der Installation des Pakets ist die freigegebene Assembly global für jede Anwendung verfügbar, die eine Abhängigkeit von der Assembly in einer Assemblymanifestdatei angibt. Das Installationsprogramm registriert die side-by-side-Assembly nicht global auf dem System.

Beachten Sie, dass Sie freigegebene assemblys mithilfe von Mergemoduleninstallieren können.

Bevor Sie fortfahren, sollten Sie verstehen, wie Sie ein Windows Installer-Paket ohne Assemblys erstellen. Ein Beispiel für das Erstellen einer einfachen Installation finden Sie unter Beispiel für eine Installation.

So installieren Sie eine freigegebene Assembly nebeneinander

  1. Definieren Sie eine Windows Installer-Komponente, die die Win32-Assembly enthält. Diese Komponente kann andere Ressourcen enthalten, die immer mit der Assembly installiert oder entfernt werden sollten. Alle anderen Komponenten der Anwendung können wie bei einer Installation ohne Assemblys erstellt werden. Fügen Sie der Tabelle Komponente eine Zeile für die Komponente hinzu, die die Win32-Assembly enthält. Geben Sie eine gültige Windows Installer-GUID für diesen Komponentencode ein. Verwenden Sie die Manifestdatei nicht als Schlüsselpfad für diese Komponente.
  2. Fügen Sie der Tabelle FeatureComponents eine Zeile hinzu, die die Komponente an eine Windows Installer-Funktion bindet. Weitere Informationen finden Sie unter Komponenten und Features. Ein Windows Installer-Feature sollte ein Teil der Funktionalität der Anwendung sein, der für einen Benutzer erkennbar ist. Die Assembly wird aktiviert, wenn dieses Feature von einem Benutzer ausgewählt oder von einer Anwendung fehlerhaft ist. Wenn die Assembly ein zusätzliches Feature definiert, fügen Sie der Tabelle Feature eine zusätzliche Zeile für die Attribute des Features hinzu. Dieser Schritt ist beim Erstellen eines Mergemoduls nicht erforderlich.
  3. Für parallele Assemblys werden Bindungs- und Aktivierungsinformationen wie COM-Klassen, Schnittstellen und Typbibliotheken nicht in der Registrierung, sondern in Manifestdateien gespeichert. Freigegebene Assemblys speichern diese Informationen in einem Assemblymanifest. Auf Systemen, die parallele Assemblys unterstützen, überspringt das Installationsprogramm die Verarbeitung sämtlicher Informationen über die in der Erweiterungstabelleeingegebene Komponente, verb-Tabelle, TypeLib-Tabelle, MIME-Tabelle, Klassentabelle, ProgId-Tabelleund AppId-Tabelle. Bindungs- und Aktivierungsinformationen können in diese Tabellen eingegeben werden, damit sie von Systemen verwendet werden können, die die gemeinsame Nutzung von Assemblys nicht unterstützen.
  4. Bei der parallelen Installation wird die Assembly nicht global registriert. Das Installationsprogramm überspringt die Selbstregistrierung der Komponente, wenn selbstregistrierungsinformationen in die SelfReg-Tabelleeingegeben wurden. Informationen zur Selbstregistrierung können in die SelfReg-Tabelle eingegeben werden, um die Komponente auf Systemen selbst zu registrieren, die die gemeinsame Nutzung von Assemblys nicht unterstützen.
  5. Fügen Sie der Registrierungstabelle,der RemoveRegistry-Tabelleund der Umgebungstabellealle anderen Registrierungsinformationen hinzu, die ausschließlich bindungs- und aktivierungsbezogen oder die Selbstregistrierung der Komponente sind.
  6. Da es sich um eine freigegebene Assembly handelt, generieren Sie keine LOKALE Datei. Schließen Sie keine Informationen für diese Komponente in die IsolatedComponent-Tabelleein. Das Installationsprogramm überspringt die Tabelle IsolatedComponent für diese Komponente unter Betriebssystemen, die die gemeinsame Nutzung unterstützen. Fügen Sie der Tabelle IsolatedComponent Informationen hinzu, wenn die Assembly auf Systemen, die LOKALE Dateien unterstützen, privat sein soll.
  7. Die Win32-Assembly muss im Winsxs-Ordner installiert sein, um die gemeinsame Nutzung zu ermöglichen. Dies wird erreicht, indem die _ Spalte Dateianwendung der MsiAssembly-Tabelle für die Assembly NULL bleibt. Dadurch wird das Installationsprogramm angewiesen, die Assembly im WinSxS-Ordner anstelle des Ordners der Komponente zu installieren. Fügen Sie der MsiAssembly-Tabelle eine Zeile für die Komponente hinzu, die die Win32-Assembly enthält. Geben Sie im Feld Attribute der MsiAssembly-Tabelle den Wert 1 ein, um anzugeben, dass es sich um eine Win32-Assembly handelt. Lassen Sie für eine freigegebene Assembly das _ Feld Dateianwendung leer. Fügen Sie die MsiPublishAssemblies-Aktion der Tabelle InstallExecuteSequence oder der Tabelle AdvtExecuteSequence hinzu. Fügen Sie der Tabelle InstallExecuteSequence die MsiUnpublishAssemblies-Aktion hinzu.
  8. Fügen Sie der MsiAssemblyName-Tabelle Zeilen für die Komponente hinzu. Fügen Sie eine Zeile für jedes Name-Wert-Paar hinzu, das im AssemblyIdentity-Abschnitt des Manifests angegeben ist. Ein Beispiel finden Sie unter MsiAssemblyName-Tabelle.