다음을 통해 공유


병렬 파일 연결 관리

VSPackage가 파일 연결을 제공하는 경우 파일을 열기 위해 특정 버전의 Visual Studio를 호출해야 하는 병렬 설치를 처리하는 방법을 결정해야 합니다. 호환되지 않는 파일 형식은 문제를 악화시킵니다.

사용자는 새 버전의 제품이 이전 버전과 호환되어 데이터 손실 없이 기존 파일을 새 버전으로 로드할 수 있기를 기대합니다. 이상적으로 VSPackage는 이전 버전의 파일 형식을 로드하고 저장할 수 있습니다. 그렇지 않은 경우 파일 형식을 VSPackage의 새 버전으로 업그레이드하도록 제안해야 합니다. 이 방법의 단점은 업그레이드된 파일을 이전 버전에서 열 수 없다는 것입니다.

이 문제를 방지하려면 파일 형식이 호환되지 않을 때 확장자를 변경할 수 있습니다. 예를 들어 VSPackage 버전 1은 .mypkg10 확장명을 사용할 수 있고 버전 2는 .mypkg20 확장명을 사용할 수 있습니다. 이 차이는 특정 파일을 여는 VSPackage를 식별합니다. 이전 확장과 연결된 프로그램 목록에 최신 VSPackage를 추가하면 사용자는 파일을 마우스 오른쪽 단추로 클릭하고 새로운 VSPackage에서 열도록 선택할 수 있습니다. 이 시점에서 VSPackage는 파일을 새 형식으로 업그레이드하거나 파일을 열고 이전 버전의 VSPackage와의 호환성을 유지하도록 제안할 수 있습니다.

참고 항목

이러한 방법을 결합할 수 있습니다. 예를 들어, 이전 파일을 로드하여 이전 버전과의 호환성을 제공하고 사용자가 파일을 저장할 때 파일 형식을 업그레이드하도록 제안할 수 있습니다.

문제 직면

여러 VSPackage가 동일한 확장을 사용하도록 하려면 확장과 연결된 Visual Studio 버전을 선택해야 합니다. 두 가지 대안은 다음과 같습니다.

  • 사용자의 컴퓨터에 설치된 최신 버전의 Visual Studio에서 파일을 엽니다.

    이 방법에서는 설치 관리자가 Visual Studio의 최신 버전을 확인하고 파일 연결을 위해 작성된 레지스트리 항목에 해당 버전을 포함해야 합니다. Windows Installer 패키지에서 사용자 지정 작업을 포함하여 Visual Studio의 최신 버전을 나타내는 속성을 설정할 수 있습니다.

    참고 항목

    이 컨텍스트에서 "최신"이란 "최신 지원 버전"을 의미합니다. 이러한 설치 관리자 항목은 Visual Studio의 후속 릴리스를 자동으로 감지하지 않습니다. 시스템 요구사항 감지설치 후 실행해야 하는 명령의 항목은 여기에 제시된 항목과 비슷하며 Visual Studio의 추가 버전을 지원하는 데 필요합니다.

    CustomAction 테이블의 다음 행은 DEVENV_EXE_LATEST 속성을 설치 후 실행해야 하는 명령에 설명된 AppSearch 및 RegLocator 테이블에서 설정한 속성으로 설정합니다. InstallExecuteSequence 테이블의 행은 실행 시퀀스 초기에 사용자 지정 작업을 예약합니다. 조건 열의 값으로 논리가 작동됩니다.

    • Visual Studio .NET 2002는 유일한 현재 버전인 경우 최신 버전입니다.

    • Visual Studio .NET 2003은 있고 Visual Studio가 없는 경우에만 최신 버전입니다.

    • Visual Studio는 유일한 현재 버전인 경우 최신 버전입니다.

      결과적으로 DEVENV_EXE_LATEST에 최신 버전의 devenv.exe 경로가 포함됩니다.

    최신 버전의 Visual Studio를 결정하는 사용자 지정 작업 테이블 행

    작업 형식 원본 대상
    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]

    Visual Studio의 최신 버전을 결정하는 InstallExecuteSequence 테이블 행

    작업 조건 시퀀스
    CA_SetDevenvLatest_2002 DEVENV_EXE_2002 AND NOT(DEVENV_EXE_2003 OR DEVENV_EXE_2005) 410
    CA_SetDevenvLatest_2003 DEVENV_EXE_2003 AND NOT DEVENV_EXE_2005 420
    CA_SetDevenvLatest_2005 DEVENV_EXE_2005 430

    Windows Installer 패키지의 레지스트리 테이블에 있는 DEVENV_EXE_LATEST 속성을 사용하여 HKEY_CLASSES_ROOTProgIdShellOpenCommand 키의 기본값인 [DEVENV_EXE_LATEST] "%1"을(를) 쓸 수 있습니다.

  • 사용 가능한 VSPackage 버전 중에서 최적의 선택을 할 수 있는 공유 시작 관리자 프로그램을 실행합니다.

    Visual Studio 개발자는 여러 버전의 Visual Studio에서 발생하는 여러 형식의 솔루션 및 프로젝트의 복잡한 요구 사항을 처리하기 위해 이 방법을 선택했습니다. 이 방법에서는 시작 관리자 프로그램을 확장 처리기로 등록합니다. 시작 관리자는 파일을 검사하고 해당 특정 파일을 처리할 수 있는 Visual Studio 및 VSPackage 버전을 결정합니다. 예를 들어 사용자가 특정 버전의 VSPackage에서 마지막으로 저장한 파일을 여는 경우 시작 관리자는 일치하는 Visual Studio 버전에서 해당 VSPackage를 시작할 수 있습니다. 또한 사용자는 항상 최신 버전을 시작하도록 시작 관리자를 구성할 수 있습니다. 시작 관리자가 사용자에게 파일 형식을 업그레이드하라는 메시지를 표시할 수도 있습니다. 파일 형식에 버전 번호가 포함된 경우 실행기는 파일 형식이 설치된 VSPackage 중 하나 이상보다 최신 버전인지 사용자에게 알릴 수 있습니다.

    시작 관리자는 모든 버전의 VSPackage와 공유되는 Windows Installer 구성 요소에 있어야 합니다. 이 프로세스는 최신 버전이 항상 설치되도록 하며 VSPackage의 모든 버전이 제거될 때까지 제거되지 않도록 합니다. 이러한 방식으로 VSPackage의 한 버전이 제거된 경우에도 시작 관리자 구성 요소의 파일 연결 및 기타 레지스트리 항목이 유지됩니다.

제거 및 파일 연결

파일 연결에 대한 레지스트리 항목을 쓰는 VSPackage를 제거하면 파일 연결이 제거됩니다. 따라서 확장에는 연결된 프로그램이 없습니다. Windows Installer는 VSPackage를 설치할 때 추가된 레지스트리 항목을 "복구"하지 않습니다. 다음은 사용자의 파일 연결을 수정하는 몇 가지 방법입니다.

  • 앞에서 설명한 대로 공유 시작 관리자 구성 요소를 사용합니다.

  • 사용자에게 파일 연결을 소유할 VSPackage 버전의 복구를 실행하도록 지시합니다.

  • 적절한 레지스트리 항목을 다시 작성하는 별도의 실행 프로그램을 제공합니다.

  • 사용자가 파일 연결을 선택하고 손실된 연결을 회수할 수 있는 구성 옵션 페이지 또는 대화 상자를 제공합니다. 제거 후 실행하도록 사용자에게 지시합니다.