Aktualisieren von Assemblys

In den Informationen in diesem Thema werden die empfohlenen Richtlinien zum Aktualisieren von Assemblys mithilfe Windows Installer-Patches beschrieben.

Autoren von Assemblyupdates können die folgenden Richtlinien verwenden, die für alle Typen von Assemblys gelten:

  • Die empfohlene Methode zum Aktualisieren einer Assembly ist das Ändern des starken Namens der Assembly in der MsiAssemblyName-Tabelle. Die neue Assemblyversion kann von einer neuen Komponente oder von derselben Komponente bereitgestellt werden, die die alte Version zur Verfügung stellt.
  • Wenn die neue Assemblyversion von derselben Komponente bereitgestellt wird, ändern Sie den Assemblytyp nicht von einer .NET Framework-Assembly in eine Win32-Assembly oder umgekehrt.
  • Wenn alle Anwendungen im System die aktualisierte Assembly verwenden müssen, sollten Sie eine Richtlinien-Assembly bereitstellen. Eine Richtlinien-Assembly kann Anwendungen auf dem System umleiten, um die neue Assemblyversion zu verwenden. Richtlinienassemblys sollten durch Erstellen einer neuen Komponente bereitgestellt werden.
  • Windows Installationsprogramm 3.0 oder höher ist erforderlich, um Assemblyupdates zu deinstallieren. Weitere Informationen finden Sie unter Entfernen von Patches.
  • Die neuere Version der Assembly sollte die gleichen oder höhere Versionen von Dateien aus zuvor freigegebenen Assemblys enthalten.
  • Windows Installer 3.0 kann .NET Framework und Win32-Assemblys durch einen vollständigen Dateiersetzungs- oder durch ein kleineres Deltaupdate serviceen. Weitere Informationen finden Sie unter Reduzieren der Patchgröße.
  • Wenn ihr Update den starken Namen der Assembly ändert, sind die Tabelle MsiPatchOldAssemblyFile und die Tabelle MsiPatchOldAssemblyName erforderlich, wenn das Patchpaket keine MsiPatchSequence-Tabelle enthält. Die Tabelle MsiPatchOldAssemblyFile und msiPatchOldAssemblyName sind nicht erforderlich, wenn das Patchpaket Informationen zur Patchsequenzierung in einer MsiPatchSequence-Tabelle enthält.
  • Bevor Sie einen neuen Patch veröffentlichen, testen Sie den Patch, indem Sie ihn mit allen zuvor veröffentlichten Patches anwenden.

Aktualisieren von Win32-Assemblys

Befolgen Sie beim Aktualisieren von Win32-Assemblys die folgenden Richtlinien:

  • Ändern Sie den starken Namen der neuen Assembly, die in der MsiAssemblyName-Tabelle angegeben ist.
  • Wenn Ihre Anwendung immer die neue Version der Assembly verwenden soll, ohne die Assemblyversion zu beeinträchtigen, die von anderen Anwendungen im System verwendet wird, verwenden Sie dieselbe Komponente, um die neue Assemblyversion zu enthalten, die Sie für die alte Assemblyversion verwendet haben. Behalten Sie die gleiche ComponentId in der Tabelle Component bei. Nachdem ihre Anwendung gepatcht wurde, enthält sie nur einen Verweis auf die neue Version der Assembly. Die alte Version der Assembly kann mit der neuen Version im globalen Assemblycache verbleiben. Dies wirkt sich nicht auf andere Anwendungen auf dem System aus, die die alte Version der Assembly verwenden. Wenn dieselbe Komponente sowohl für die neue als auch für die alte Version der Assembly verwendet wird, kann das Update ein kleinerer Deltapatch sein.
  • Wenn die neue Version der Assembly nicht mit allen Systemen kompatibel ist, auf denen Sie die Anwendung installieren möchten, können Sie die neue und die alte Version der Assembly als nebenseitige Assemblys installieren. Um beide Assemblyversionen nebeneinander zu installieren, erstellen Sie eine neue Komponente, die die neue Assemblyversion enthält. Die ComponentId in der Component-Tabelle für die neue Komponente sollte sich von der ComponentId der Komponente mit der alten Version unterscheiden. Nachdem Ihre Anwendung gepatcht wurde, enthält sie Verweise auf beide Assemblyversionen. Anschließend kann die Anwendung über ein Manifest zur kompatiblen Version der Assembly geleitet werden. Wenn für die neue und die alte Version der Assembly unterschiedliche Komponenten verwendet werden, verwendet Ihr Update den vollständigen Dateiersetzungs-.

Aktualisieren .NET Framework Assemblys

Befolgen Sie die folgenden Richtlinien, wenn Sie .NET Framework aktualisieren.

  • Ändern Sie den starken Namen der neuen Assembly, die in der MsiAssemblyName-Tabelle angegeben ist.
  • Wenn Ihre Anwendung immer die neue Version der Assembly verwenden soll, ohne die Assemblyversion zu beeinträchtigen, die von anderen Anwendungen im System verwendet wird, ändern Sie den starken Namen der neuen Assembly, die in der MsiAssemblyName-Tabelleangegeben ist, und verwenden Sie dieselbe Komponente, um die neue Assemblyversion zu enthalten, die Sie für die alte Assemblyversion verwendet haben. Behalten Sie die gleiche ComponentId in der Tabelle Component bei. Nachdem ihre Anwendung gepatcht wurde, enthält sie nur einen Verweis auf die neue Version der Assembly. Die alte Version der Assembly kann bei der neuen Version im globalen Cache verbleiben. Dies wirkt sich nicht auf andere Anwendungen auf dem System aus, die die alte Version der Assembly verwenden. Wenn dieselbe Komponente sowohl für die neue als auch für die alte Version der Assembly verwendet wird, kann das Update ein kleinerer Deltapatch sein.
  • Wenn die neue Version der Assembly nicht mit allen Systemen kompatibel ist, auf denen Sie die Anwendung installieren möchten, können Sie die neuen und alten Versionen der Assembly als nebenseitige Assemblys installieren. Um beide Assemblyversionen nebeneinander zu installieren, ändern Sie den starken Namen der neuen Assembly, die in der Tabelle MsiAssemblyNameangegeben ist, und erstellen Sie eine neue Komponente, die die neue Assemblyversion enthält. Die ComponentId in der Component-Tabelle für die neue Komponente sollte sich von der ComponentId der Komponente mit der alten Version unterscheiden. Nachdem Ihre Anwendung gepatcht wurde, enthält sie Verweise auf beide Assemblyversionen. Die Anwendung kann dann von einem Manifest an die kompatible Version der Assembly geleitet werden. Wenn für die neue und die alte Version der Assembly unterschiedliche Komponenten verwendet werden, verwendet Ihr Update den vollständigen Dateiersetzungs-.
  • Ein vorhandenes Update überschreibt die Kopie einer .NET Framework Assembly im globalen Assemblycache. Dieser Typ der Assemblyaktualisierung ändert nicht den starken Namen der Assembly. Nur der Wert im FileVersion-Feld der Tabelle MsiAssemblyName wird geändert. Das place-Update einer .NET Framework Assembly erfordert .NET Framework 1.1 SP1 oder höher.

    Hinweis

    Der typspezifische Update überschreibt die Kopie der Assembly im globalen Cache und kann andere Anwendungen unterbricht, wenn die neue Version der Assembly nicht vollständig abwärtskompatibel ist. Die empfohlene Methode zum Aktualisieren einer Assembly ist das Ändern des starken Namens der Assembly in der MsiAssemblyName-Tabelle.