Eine Assembly im globalen Assemblycache oder SxS fehlt nach dem Durchführen einer größeren Aktualisierung mithilfe eines Windows Installer-Pakets

Problembeschreibung

Nach der Durchführung einer umfangreichen Aktualisierung mithilfe eines Microsoft Windows Installer-Pakets fehlt eine Assembly im globalen Assemblycache oder SxS (Side-by-Side-Ordner, \Windows\WinSxS\).

Ursache

Dieses Problem tritt auf, wenn Windows Installer RemoveExistingProducts-Aktion an einer Stelle sequenziert wird, die entsprechenden Verweiszähler für die Assembly verhindert und dadurch die vorzeitige Entfernung der Assembly. RemoveExistingProducts-Aktion wird in der Tabelle "InstallExecuteSequence" Windows Installer-Paket berechnet. Dieses Problem tritt auf, wenn die Aktion RemoveExistingProducts sequenziert wird, damit das alte Produkt entfernt wird, bevor das neue Produkt installiert ist.

Wenn eine Assembly im globalen Assemblycache ablegen, wird die Assembly umbenannt. Windows Installer kann nicht den richtigen Namen der Assembly bestimmen. Windows Installer muss auf Microsoft.NET Framework den Namen zu verlassen.

Beim Ausführen einer umfangreichen Aktualisierung mithilfe von Windows Installer-Paket ruft Windows Installer in.NET Framework zu testen, ob die Assembly im globalen Assemblycache installiert ist. Wenn.NET Framework Ja zurückgibt, ist die Komponente, die Assembly wichtigen Windows Installer-Aktualisierungspaket enthält, für die Installation nicht zulässig. Als Nächstes RemoveExistingProducts-Aktion ausgeführt und die vorhandene Assembly im globalen Assemblycache deinstalliert. RemoveExistingProducts-Aktion wird das neue Produkt wurde nicht als ein Client die Assembly registriert und keine Clients vorhanden sind. Da die Komponente in dem wichtigen Update für die Installation nicht erlaubt wurde, wird die Assembly Wenn das wichtige Update Komponenten installiert nicht neu installiert.

Wenn Sie die Aktion RemoveExistingProducts Deinstallation des alten Produkts planen ändern, nachdem das neue Produkt installiert ist, wird die Assembly nicht entfernt. Die Assembly wird nicht entfernt, da die Assembly jetzt einen zusätzlichen hat Verweiszähler des neuen Produkts. Daher, obwohl die Installation der Assembly für das wichtige Update übersprungen wird, bleibt die Assembly, da ein anderer Client die Assembly verweist. Das neue Produkt und das alte Produkt verweisen auf die Assembly .

Hinweis Wenn sich eine Assembly nicht im globalen Assemblycache befindet, erfolgt keine Umbenennung. Die standardmäßigen Windows Installer-Dateiversionsregeln anwenden und Komponente in dem wichtigen Update kann für die Installation.

PROBLEMUMGEHUNG

Um dieses Problem zu umgehen, verwenden Sie eine der folgenden Methoden.

Methode 1

Erhöhen Sie das AssemblyVersion -Attribut der Assembly, die Sie erstellen eine nebeneinander Installation im globalen Assemblycache installieren möchten.

Methode 2

Verwenden Sie eine Windows Installer-Tabelle-authoring-Tools so ändern Sie die Reihenfolge der RemoveExistingProducts-Aktion in der Tabelle "InstallExecuteSequence" nach der Aktion InstallFinalize auftreten. Z. B. des Orca.exe Datenbank-Tabellen-Editors zum Erstellen und Bearbeiten von Windows Installer-Pakete.

Weitere Informationen

Erstellen Sie ein Windows Installer-Paket in ein
Projekt in Microsoft Visual Studio .NET Setup and Deployment Projects . Wenn die RemoveExistingProducts-Aktion in diesem Windows Installer-Paket sequenziert wird, wird der Standardspeicherort der RemoveExistingProducts-Aktion in der Tabelle "InstallExecuteSequence" im Abschnitt "Symptome" beschriebene Problem.

Weitere Informationen finden Sie auf folgenden Websites von Microsoft Developer Network (MSDN):
Eigenschaften

Artikelnummer: 905238 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback