Udostępnij za pośrednictwem


Zarządzanie skojarzeniami plików równoległych

Jeśli pakiet VSPackage udostępnia skojarzenia plików, musisz zdecydować, jak obsługiwać instalacje równoległe, w których należy wywołać określoną wersję programu Visual Studio w celu otwarcia pliku. Niezgodne formaty plików komkładają problem.

Użytkownicy oczekują, że nowa wersja produktu będzie zgodna z wcześniejszymi wersjami, aby istniejące pliki mogły zostać załadowane w nowej wersji bez utraty danych. W idealnym przypadku pakiet VSPackage może ładować i zapisywać formaty plików wcześniejszych wersji. Jeśli tak nie jest, należy zaoferować uaktualnienie formatu pliku do nowej wersji pakietu VSPackage. Wadą tego podejścia jest to, że uaktualniony plik nie może być otwarty we wcześniejszej wersji.

Aby uniknąć tego problemu, możesz zmienić rozszerzenia, gdy formaty plików staną się niezgodne. Na przykład wersja 1 pakietu VSPackage może używać rozszerzenia mypkg10 i w wersji 2 może używać rozszerzenia .mypkg20. Ta różnica identyfikuje pakiet VSPackage, który otwiera określony plik. Jeśli dodasz nowsze pakiety VSPackage do listy programów skojarzonych ze starym rozszerzeniem, użytkownicy będą mogli kliknąć plik prawym przyciskiem myszy i wybrać otwarcie go w nowszym programie VSPackage. W tym momencie pakiet VSPackage może zaoferować uaktualnienie pliku do nowego formatu lub otwarcie pliku i zachowanie zgodności z wcześniejszymi wersjami pakietu VSPackage.

Uwaga

Te podejścia można połączyć. Na przykład można zaoferować zgodność z poprzednimi wersjami, ładując starszy plik i oferując uaktualnienie formatu pliku, gdy użytkownik go zapisze.

Rozwiązywanie problemu

Jeśli chcesz, aby wiele pakietów VSPackage obok siebie używało tego samego rozszerzenia, musisz wybrać wersję programu Visual Studio skojarzoną z rozszerzeniem. Oto dwie alternatywy:

  • Otwórz plik w najnowszej wersji programu Visual Studio zainstalowanego na komputerze użytkownika.

    W tym podejściu instalator jest odpowiedzialny za określenie najnowszej wersji programu Visual Studio i uwzględnienie go we wpisie rejestru napisanym dla skojarzenia pliku. W pakiecie Instalatora Windows można uwzględnić akcje niestandardowe, aby ustawić właściwość wskazującą najnowszą wersję programu Visual Studio.

    Uwaga

    W tym kontekście "latest" oznacza "najnowszą obsługiwaną wersję". Te wpisy instalatora nie będą automatycznie wykrywać kolejnej wersji programu Visual Studio. Wpisy w artykule Wykrywanie wymagań systemowych i w poleceniach, które muszą być uruchamiane po instalacji , są podobne do tych przedstawionych tutaj i są wymagane do obsługi dodatkowych wersji programu Visual Studio.

    Poniższe wiersze w tabeli CustomAction ustawiły właściwość DEVENV_EXE_LATEST jako właściwość ustawioną przez tabele AppSearch i RegLocator omówione w temacie Polecenia, które muszą być uruchamiane po instalacji. Wiersze w tabeli InstallExecuteSequence zaplanują akcje niestandardowe na początku sekwencji wykonywania. Wartości w kolumnie Warunek sprawiają, że logika działa:

    • Program Visual Studio .NET 2002 jest najnowszą wersją, jeśli jest jedyną bieżącą wersją.

    • Program Visual Studio .NET 2003 jest najnowszą wersją tylko wtedy, gdy jest obecny, a program Visual Studio nie jest obecny.

    • Program Visual Studio jest najnowszą wersją, jeśli jest jedyną bieżącą wersją.

      Wynikiem net jest to, że DEVENV_EXE_LATEST zawiera ścieżkę najnowszej wersji pliku devenv.exe.

    Wiersze tabeli CustomAction określające najnowszą wersję programu Visual Studio

    Akcja Typ Lokalizacja źródłowa Target
    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 wiersze tabeli, które określają najnowszą wersję programu Visual Studio

    Akcja Stan Sequence
    CA_SetDevenvLatest_2002 DEVENV_EXE_2002 I NIE (DEVENV_EXE_2003 LUB DEVENV_EXE_2005) 410
    CA_SetDevenvLatest_2003 DEVENV_EXE_2003 I NIE DEVENV_EXE_2005 420
    CA_SetDevenvLatest_2005 DEVENV_EXE_2005 430

    Możesz użyć właściwości DEVENV_EXE_LATEST w tabeli Registry pakietu Instalatora Windows, aby zapisać wartość domyślną HKEY_CLASSES_ROOTProgIdShellOpenCommand klucza [DEVENV_EXE_LATEST] "%1"

  • Uruchom udostępniony program uruchamiania, który może wybrać najlepszy wybór spośród dostępnych wersji pakietu VSPackage.

    Deweloperzy programu Visual Studio wybrali to podejście do obsługi złożonych wymagań wielu formatów rozwiązań i projektów, które wynikają z wielu wersji programu Visual Studio. W tym podejściu program uruchamiania jest rejestrowany jako program obsługi rozszerzeń. Moduł uruchamiający sprawdza plik i decyduje, która wersja programu Visual Studio i pakiet VSPackage może obsłużyć ten konkretny plik. Jeśli na przykład użytkownik otworzy plik, który został ostatnio zapisany przez określoną wersję pakietu VSPackage, program uruchamiający może uruchomić pakiet VSPackage w zgodnej wersji programu Visual Studio. Ponadto użytkownik może skonfigurować moduł uruchamiania, aby zawsze uruchamiał najnowszą wersję. Uruchamianie może również monitować użytkownika o uaktualnienie formatu pliku. Jeśli format pliku zawiera numer wersji, moduł uruchamiający może poinformować użytkownika, czy format pliku pochodzi z wersji nowszej niż jedna lub więcej zainstalowanych pakietów VSPackage.

    Moduł uruchamiania powinien znajdować się w składniku Instalatora Windows, który jest współużytkowany ze wszystkimi wersjami pakietu VSPackage. Ten proces zapewnia, że najnowsza wersja jest zawsze zainstalowana i nie jest usuwana, dopóki wszystkie wersje pakietu VSPackage nie zostaną odinstalowane. W ten sposób skojarzenia plików i inne wpisy rejestru składnika uruchamiania są zachowywane nawet w przypadku odinstalowania jednej wersji pakietu VSPackage.

Odinstalowywanie i skojarzenia plików

Odinstalowanie pakietu VSPackage, który zapisuje wpisy rejestru dla skojarzeń plików, usuwa skojarzenia plików. W związku z tym rozszerzenie nie ma skojarzonych programów. Instalator Windows nie "odzyska" wpisów rejestru dodanych podczas instalowania pakietu VSPackage. Poniżej przedstawiono kilka sposobów naprawiania skojarzeń plików użytkownika:

  • Użyj udostępnionego składnika uruchamiania zgodnie z wcześniejszym opisem.

  • Poinstruuj użytkownika, aby uruchamiał naprawę wersji pakietu VSPackage, którą użytkownik chce posiadać skojarzenie plików.

  • Podaj oddzielny program wykonywalny, który ponownie zapisuje odpowiednie wpisy rejestru.

  • Podaj stronę lub okno dialogowe opcji konfiguracji, które umożliwia użytkownikom wybieranie skojarzeń plików i odzyskiwanie utraconych skojarzeń. Poinstruuj użytkowników, aby uruchamiali je po odinstalowaniu.