Aktualisieren von Assemblys

Hier erhalten Sie Informationen zu den empfohlenen Richtlinien für das Aktualisieren von Assemblys mithilfe von Windows Installer-Patches.

Autor*innen von Assemblyupdates können sich an die folgenden Richtlinien halten, die für alle Typen von Assemblys gelten:

  • Die empfohlene Methode zum Aktualisieren einer Assembly besteht darin, den starken Namen der Assembly in der MsiAssemblyName-Tabelle zu ändern. Die neue Assemblyversion kann von einer neuen Komponente oder von der gleichen Komponente wie die alte Version bereitgestellt werden.
  • Wird die neue Assemblyversion von der gleichen Komponente bereitgestellt, ändern Sie den Assemblytyp nicht von einer .NET Framework-Assembly in eine Win32-Assembly oder umgekehrt.
  • Müssen alle Anwendungen im System die aktualisierte Assembly verwenden, sollten Sie eine Richtlinienassembly bereitstellen. Eine Richtlinienassembly kann Anwendungen im System zur neuen Assemblyversion umleiten. Richtlinienassemblys sollten durch Erstellen einer neuen Komponente bereitgestellt werden.
  • Für die Deinstallation von Assemblyupdates ist Windows Installer 3.0 oder höher erforderlich. Weitere Informationen finden Sie unter Entfernen von Patches.
  • Die neuere Version der Assembly sollte dieselbe oder eine höhere Version der Dateien aus früher veröffentlichten Assemblys enthalten.
  • Windows Installer 3.0 kann .NET Framework- und Win32-Assemblys durch einen vollständigen Dateiaustausch oder eine kleinere Deltaaktualisierung warten. Weitere Informationen finden Sie unter Reduzieren der Patchgröße.
  • Wird mit dem Update der starke Name der Assembly geändert, sind die MsiPatchOldAssemblyFile-Tabelle und die MsiPatchOldAssemblyName-Tabelle erforderlich, wenn das Patchpaket keine MsiPatchSequence-Tabelle enthält. Die MsiPatchOldAssemblyFile- und die MsiPatchOldAssemblyName-Tabelle sind nicht erforderlich, wenn das Patchpaket Informationen zur Patchsequenzierung in einer MsiPatchSequence-Tabelle enthält.
  • Vor dem Release eines neuen Patches sollten Sie diesen testen, indem Sie ihn mit allen zuvor veröffentlichten Patches anwenden.

Aktualisieren von Win32-Assemblys

Befolgen Sie bei der Aktualisierung von Win32-Assemblys die folgenden Richtlinien:

  • Ändern Sie den starken Namen der neuen Assembly, der in der MsiAssemblyName-Tabelle angegeben ist.
  • Soll Ihre Anwendung immer die neue Version der Assembly verwenden ohne Auswirkung auf die von anderen Anwendungen im System genutzte Assemblyversion, verwenden Sie für die neue Assemblyversion dieselbe Komponente wie für die alte Assemblyversion. Behalten Sie in der Component-Tabelle das Element „ComponentId“ bei. Nach dem Patching enthält Ihre Anwendung nur einen Verweis auf die neue Version der Assembly. Die alte Version der Assembly kann zusammen mit der neuen Version im globalen Assemblycache gespeichert bleiben. Dies hat keine Auswirkungen auf andere Anwendungen im System, die die alte Assemblyversion verwenden. Wenn Sie für die neue und die alte Assemblyversion die gleiche Komponente verwenden, können Sie als Update einen kleineren Deltapatch anwenden.
  • Ist die neue Assemblyversion nicht mit allen Systemen kompatibel, in denen Sie Ihre Anwendung installieren möchten, können Sie die neue und alte Assemblyversion als parallele Assemblys installieren. Damit Sie beide Assemblyversionen nebeneinander installieren können, erstellen Sie eine neue Komponente, die die neue Version der Assembly enthält. Das Element „ComponentId“ in der Component-Tabelle für die neue Komponente sollte sich von „ComponentId“ der Komponente mit der alten Version unterscheiden. Nach dem Patching enthält Ihre Anwendung Verweise auf beide Assemblyversionen. Anschließend können Sie die Anwendung über ein Manifest an die kompatible Version der Assembly weiterleiten. Werden für die neue und alte Version der Assembly unterschiedliche Komponenten verwendet, führt das Update einen vollständigen Dateiaustausch durch.

Aktualisieren von .NET Framework-Assemblys

Befolgen Sie bei der Aktualisierung von .NET Framework-Assemblys die folgenden Richtlinien:

  • Ändern Sie den starken Namen der neuen Assembly, der in der MsiAssemblyName-Tabelle angegeben ist.

  • Soll Ihre Anwendung immer die neue Version der Assembly verwenden ohne Auswirkung auf die von anderen Anwendungen im System genutzte Assemblyversion, ändern Sie den starken Namen der neuen Assembly, der in der MsiAssemblyName-Tabelle angegeben ist. Verwenden Sie für die neue Assemblyversion dieselbe Komponente wie für die alte Assemblyversion. Behalten Sie in der Component-Tabelle das Element „ComponentId“ bei. Nach dem Patching enthält Ihre Anwendung nur einen Verweis auf die neue Version der Assembly. Die alte Version der Assembly kann zusammen mit der neuen Version im globalen Cache gespeichert bleiben. Dies hat keine Auswirkungen auf andere Anwendungen im System, die die alte Assemblyversion verwenden. Wenn Sie für die neue und die alte Assemblyversion die gleiche Komponente verwenden, können Sie als Update einen kleineren Deltapatch anwenden.

  • Ist die neue Assemblyversion nicht mit allen Systemen kompatibel, in denen Sie Ihre Anwendung installieren möchten, können Sie die neue und alte Assemblyversion als parallele Assemblys installieren. Damit Sie beide Assemblyversionen nebeneinander installieren können, ändern Sie den starken Namen der neuen Assembly, der in der MsiAssemblyName-Tabelle angegeben ist, und erstellen Sie eine neue Komponente, die die neue Version der Assembly enthält. Das Element „ComponentId“ in der Component-Tabelle für die neue Komponente sollte sich von „ComponentId“ der Komponente mit der alten Version unterscheiden. Nach dem Patching enthält Ihre Anwendung Verweise auf beide Assemblyversionen. Anschließend können Sie die Anwendung über ein Manifest an die kompatible Version der Assembly weiterleiten. Werden für die neue und alte Version der Assembly unterschiedliche Komponenten verwendet, führt das Update einen vollständigen Dateiaustausch durch.

  • Bei einem direkten Update wird die Kopie einer .NET Framework-Assembly im globalen Assemblycache überschrieben. Bei diesem Typ von Assemblyupdate wird der starke Name der Assembly nicht geändert. Es wird nur der Wert im Feld „FileVersion“ der MsiAssemblyName-Tabelle geändert. Für die direkte Aktualisierung einer .NET Framework-Assembly ist .NET Framework 1.1 SP1 oder höher erforderlich.

    Hinweis

    Bei einem direkten Update wird die Kopie der Assembly im globalen Cache überschrieben. Ist die neue Assemblyversion nicht vollständig abwärtskompatibel, kann dies zu Unterbrechungen bei anderen Anwendungen führen. Die empfohlene Methode zum Aktualisieren einer Assembly besteht darin, den starken Namen der Assembly in der MsiAssemblyName-Tabelle zu ändern.