Verwalten von parallelen Dateizuordnungen
Wenn Ihr VSPackage Dateizuordnungen bereitstellt, müssen Sie entscheiden, wie Parallelinstallationen behandelt werden, in denen eine bestimmte Version von Visual Studio aufgerufen werden soll, um eine Datei zu öffnen. Inkompatible Dateiformate haben das Problem zusammen.
Benutzer erwarten, dass eine neue Version eines Produkts mit früheren Versionen kompatibel ist, sodass vorhandene Dateien in eine neue Version geladen werden können, ohne Daten zu verlieren. Im Idealfall kann Ihr VSPackage sowohl die Dateiformate früherer Versionen laden als auch speichern. Wenn dies nicht der Fall ist, sollten Sie anbieten, das Dateiformat auf die neue Version Ihres VSPackage zu aktualisieren. Der Nachteil dieser Vorgehensweise besteht darin, dass die aktualisierte Datei nicht in der früheren Version geöffnet werden kann.
Um dieses Problem zu vermeiden, können Sie Erweiterungen ändern, wenn Dateiformate inkompatibel werden. Beispielsweise könnte Version 1 Ihres VSPackage die Erweiterung " .mypkg10" und Version 2 die Erweiterung " .mypkg20" verwenden. Dieser Unterschied identifiziert das VSPackage, das eine bestimmte Datei öffnet. Wenn Sie der Liste der Programme, die einer alten Erweiterung zugeordnet sind, neuere VSPackages hinzufügen, können Benutzer mit der rechten Maustaste auf die Datei klicken und diese in einem neueren VSPackage öffnen. Zu diesem Zeitpunkt kann Ihr VSPackage anbieten, die Datei auf das neue Format zu aktualisieren oder die Datei zu öffnen und die Kompatibilität mit früheren Versionen von VSPackage zu Standard.
Hinweis
Sie können diese Ansätze kombinieren. Sie können beispielsweise Abwärtskompatibilität bieten, indem Sie eine ältere Datei laden und ein Upgrade des Dateiformats anbieten, wenn der Benutzer es speichert.
Face the Problem
Wenn Mehrere parallele VSPackages dieselbe Erweiterung verwenden sollen, müssen Sie die Version von Visual Studio auswählen, die der Erweiterung zugeordnet ist. Hier sind zwei Alternativen:
Öffnen Sie die Datei in der neuesten Version von Visual Studio, die auf dem Computer eines Benutzers installiert ist.
Bei diesem Ansatz ist Ihr Installationsprogramm für die Ermittlung der neuesten Version von Visual Studio verantwortlich und umfasst dies in den Registrierungseintrag, der für die Dateizuordnung geschrieben wurde. In einem Windows Installer-Paket können Sie benutzerdefinierte Aktionen einschließen, um eine Eigenschaft festzulegen, die die neueste Version von Visual Studio angibt.
Hinweis
In diesem Zusammenhang bedeutet "latest" "latest" "latest supported version". Diese Installationsprogrammeinträge erkennen nicht automatisch eine nachfolgende Version von Visual Studio. Einträge bei der Erkennung von Systemanforderungen und in Befehlen, die nach der Installation ausgeführt werden müssen, ähneln denen, die hier dargestellt werden, und sind erforderlich, um zusätzliche Versionen von Visual Studio zu unterstützen.
In den folgenden Zeilen in der Tabelle "CustomAction" wird festgelegt, dass die eigenschaft DEVENV_EXE_LATEST eine Eigenschaft ist, die von den Tabellen "AppSearch" und "RegLocator" festgelegt wird, die in "Befehle" beschrieben werden, die nach der Installation ausgeführt werden müssen. Zeilen in der Tabelle "InstallExecuteSequence" planen die benutzerdefinierten Aktionen frühzeitig in der Ausführungssequenz. Werte in der Spalte "Bedingung" sorgen dafür, dass die Logik funktioniert:
Visual Studio .NET 2002 ist die neueste Version, wenn es sich um die einzige vorhandene Version handelt.
Visual Studio .NET 2003 ist die neueste Version nur, wenn sie vorhanden ist und Visual Studio nicht vorhanden ist.
Visual Studio ist die neueste Version, wenn es sich um die einzige vorhandene Version handelt.
Das Nettoergebnis ist, dass DEVENV_EXE_LATEST den Pfad der neuesten Version von devenv.exe enthält.
CustomAction-Tabellenzeilen, die die neueste Version von Visual Studio bestimmen
Aktion Typ Quelle Ziel CA_SetDevenvLatest_2002 51 DEVENV_EXE_LATEST [DEVENV_EXE_2002] CA_SetDevenvLatest_2003 51 DEVENV_EXE_LATEST [DEVENV_EXE_2003] CA_SetDevenvLatest_2005 51 DEVENV_EXE_LATEST [DEVENV_EXE_2005] InstallExecuteSequence-Tabellenzeilen, die die neueste Version von Visual Studio bestimmen
Aktion Bedingung Sequenz CA_SetDevenvLatest_2002 DEVENV_EXE_2002 UND NICHT (DEVENV_EXE_2003 ODER DEVENV_EXE_2005) 410 CA_SetDevenvLatest_2003 DEVENV_EXE_2003 UND NICHT DEVENV_EXE_2005 420 CA_SetDevenvLatest_2005 DEVENV_EXE_2005 430 Sie können die DEVENV_EXE_LATEST-Eigenschaft in der Registrierungstabelle des Windows Installer-Pakets verwenden, um den Standardwert des HKEY_CLASSES_ROOT ProgId-ShellOpenCommand-Schlüssels [DEVENV_EXE_LATEST] "%1" zu schreiben.
Führen Sie ein freigegebenes Startprogramm aus, das die beste Wahl aus den verfügbaren VSPackage-Versionen machen kann.
Die Entwickler von Visual Studio haben diesen Ansatz ausgewählt, um die komplexen Anforderungen der verschiedenen Formate von Lösungen und Projekten zu behandeln, die aus vielen Versionen von Visual Studio resultieren. Bei diesem Ansatz registrieren Sie ein Startprogramm als Erweiterungshandler. Das Startprogramm untersucht die Datei und entscheidet, welche Version von Visual Studio und Ihr VSPackage diese bestimmte Datei verarbeiten kann. Wenn ein Benutzer beispielsweise eine Datei öffnet, die zuletzt von einer bestimmten Version Ihres VSPackage gespeichert wurde, kann das Startprogramm dieses VSPackage in der entsprechenden Version von Visual Studio starten. Darüber hinaus könnte ein Benutzer das Startprogramm so konfigurieren, dass immer die neueste Version gestartet wird. Ein Startprogramm kann auch einen Benutzer auffordern, das Format der Datei zu aktualisieren. Wenn das Format der Datei eine Versionsnummer enthält, könnte das Startprogramm einen Benutzer darüber informieren, ob das Dateiformat von einer Version stammt, die später als eine oder mehrere der installierten VSPackages liegt.
Das Startprogramm sollte sich in einer Windows Installer-Komponente befinden, die für alle Versionen Ihres VSPackage freigegeben ist. Dieser Vorgang stellt sicher, dass die neueste Version immer installiert ist und erst entfernt wird, wenn alle Versionen Ihres VSPackage deinstalliert werden. Auf diese Weise werden die Dateizuordnungen und andere Registrierungseinträge der Startprogrammkomponente beibehalten, auch wenn eine Version des VSPackage deinstalliert wird.
Deinstallieren und Dateizuordnungen
Wenn Sie ein VSPackage-Element deinstallieren, das Registrierungseinträge für Dateizuordnungen schreibt, werden die Dateizuordnungen entfernt. Daher hat die Erweiterung keine zugehörigen Programme. Windows Installer stellt die Registrierungseinträge, die beim Installieren des VSPackage-Pakets hinzugefügt wurden, nicht wieder her. Hier sind einige Möglichkeiten zum Beheben der Dateizuordnungen eines Benutzers:
Verwenden Sie wie zuvor beschrieben eine freigegebene Startprogrammkomponente.
Weisen Sie den Benutzer an, eine Reparatur der Version des VSPackage auszuführen, die der Benutzer als Besitzer der Dateizuordnung verwenden möchte.
Stellen Sie ein separates ausführbares Programm bereit, das die entsprechenden Registrierungseinträge neu schreibt.
Stellen Sie eine Konfigurationsoptionenseite oder ein Dialogfeld bereit, über die Benutzer Dateizuordnungen auswählen und verlorene Zuordnungen zurückfordern können. Weisen Sie Benutzer an, sie nach der Deinstallation auszuführen.