Installieren von Win32-Assemblys für die parallele Freigabe unter Windows XP

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 Parallelassembly nicht global im System.

Beachten Sie, dass Sie freigegebene parallele Assemblys mithilfe von Mergemodulen installieren können.

Bevor Sie fortfahren, sollten Sie wissen, wie Sie ein Windows Installer-Paket ohne Assemblys erstellen. Ein Beispiel zum Erstellen einer einfachen Installation finden Sie unter Installationsbeispiel.

So installieren Sie eine freigegebene Assembly parallel

  1. Definieren Sie eine Windows Installer-Komponente, die die Win32-Assembly enthält. Diese Komponente kann weitere Ressourcen enthalten, die stets mit der Assembly installiert oder entfernt werden sollten. Alle anderen Komponenten der Anwendung können genauso wie für eine Installation ohne Assemblys erstellt werden. Fügen Sie der Component-Tabelle für die Komponente, die die Win32-Assembly enthält, eine Zeile hinzu. 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 FeatureComponents-Tabelle eine Zeile hinzu, die die Komponente an ein Windows Installer-Feature bindet. Informationen finden Sie unter Komponenten und Features. Ein Windows Installer-Feature sollte eine Anwendungsfunktion sein, die von den Benutzer*innen erkannt werden kann. Die Assembly wird aktiviert, wenn dieses Feature von einem Benutzer ausgewählt oder von einer Anwendung geladen wurde. Wenn die Assembly ein zusätzliches Feature definiert, fügen Sie der Feature-Tabelle eine zusätzliche Zeile für die Featureattribute hinzu. Dieser Schritt ist beim Erstellen eines Mergemoduls nicht erforderlich.
  3. Für parallele Assemblys werden die Bindungs- und Aktivierungsinformationen, z. B. COM-Klassen, Schnittstellen und Typbibliotheken, in Manifestdateien und nicht in der Registrierung gespeichert. Freigegebene Assemblys speichern diese Informationen in einem Assemblymanifest. Auf Systemen mit Unterstützung für parallele Assemblys überspringt der Installer die Verarbeitung von Informationen zur Komponente, die in die Tabellen Extension, Verb, TypeLib, MIME, Class, ProgId und AppId eingegeben wurden. Bindungs- und Aktivierungsinformationen können in diese Tabellen eingegeben werden, damit sie von Systemen ohne Unterstützung für die gemeinsame Nutzung paralleler Assemblys verwendet werden können.
  4. Bei der parallelen Installation wird die Assembly nicht global registriert. Das Installationsprogramm überspringt die Selbstregistrierung der Komponente, wenn Informationen zur Selbstregistrierung in die SelfReg-Tabelle eingegeben wurden. Informationen zur Selbstregistrierung können in die SelfReg-Tabelle eingegeben werden, damit die Komponente auf Systemen ohne Unterstützung der gemeinsamen Nutzung von parallelen Assemblys eine Selbstregistrierung durchführen kann.
  5. Fügen Sie den Tabellen Registry, RemoveRegistry und Environment beliebige weitere Registrierungsinformationen hinzu, mit Ausnahme von Informationen zu Bindung, Aktivierung oder Selbstregistrierung der Komponente.
  6. Da dies eine freigegebene Assembly ist, generieren Sie keine LOCAL-Datei. Fügen Sie keine Informationen für diese Komponente in die IsolatedComponent-Tabelle ein. Der Installer überspringt die IsolatedComponent-Tabelle für diese Komponente auf Betriebssystemen, die eine parallele gemeinsame Nutzung unterstützen. Fügen Sie der IsolatedComponent-Tabelle Informationen hinzu, wenn die Assembly auf Systemen, die LOCAL-Dateien unterstützen, privat sein soll.
  7. Um die parallele Freigabe zu ermöglichen, muss die Win32-Assembly im Ordner „Winsxs“ installiert werden. Hierzu wird in der Spalte „File_Application“ der MsiAssembly-Tabelle der Wert NULL belassen. Dadurch wird das Installationsprogramm aufgefordert, die Assembly nicht im Ordner der Komponente, sondern im Ordner „Winsxs“ zu installieren. Fügen Sie der MsiAssembly-Tabelle eine Zeile für die Komponente hinzu, die die Win32-Assembly enthält. Geben Sie in das Attributfeld der MsiAssembly-Tabelle den Wert 1 ein, um anzugeben, dass es sich um eine Win32-Assembly handelt. Lassen Sie bei einer freigegebenen Assembly das Feld „File_Application“ leer. Fügen Sie die Aktion MsiPublishAssemblies zur InstallExecuteSequence-Tabelle oder zur AdvtExecuteSequence-Tabelle hinzu. Fügen Sie die Aktion MsiUnpublishAssemblies in die InstallExecuteSequence-Tabelle ein.
  8. Fügen Sie Zeilen zur MsiAssemblyName-Tabelle für die Komponente hinzu. Fügen Sie eine Zeile für jedes Name-Wert-Paar hinzu, das im Abschnitt „assemblyIdentity“ des Manifests angegeben ist. Ein Beispiel finden Sie unter MsiAssemblyName-Tabelle.