Gerenciamento de associações de arquivo lado a lado
Se seu VSPackage fornece associações de arquivo, você deve decidir como lidar com instalações lado a lado no qual uma determinada versão do Visual Studio deve ser chamado para abrir um arquivo. Formatos de arquivo incompatíveis compõem o problema.
Os usuários esperam uma nova versão de um produto para ser compatível com versões anteriores, para que os arquivos existentes podem ser carregados em uma nova versão sem perder dados. O ideal é que seu VSPackage pode carregar e salvar os formatos de arquivo das versões anteriores. Se não for verdadeira, você deve oferecer atualizar o formato de arquivo para a nova versão do seu VSPackage. A desvantagem dessa abordagem é que o arquivo atualizado não pode ser aberto na versão anterior.
Para evitar esse problema, você pode alterar extensões quando os formatos de arquivo se tornam incompatíveis. Por exemplo, a versão 1 do seu VSPackage poderia usar a extensão, .mypkg10 e versão 2 poderia usar a extensão, .mypkg20. Essa diferença identifica o VSPackage que abre um arquivo específico. Se você adicionar mais recentes VSPackages à lista de programas que estão associados uma extensão do antiga, os usuários podem o arquivo com o botão direito e escolha para abri-lo em um VSPackage mais recente. Nesse ponto, o VSPackage pode oferecer para o arquivo de atualização para o novo formato ou abrir o arquivo e manter a compatibilidade com versões anteriores do VSPackage.
Dica
Você pode combinar essas abordagens.Por exemplo, você pode oferecer compatibilidade com versões anteriores, carregando um arquivo antigo e oferecer para atualizar o formato de arquivo quando o usuário salvá-lo.
Enfrentando o problema.
Se você desejar que vários VSPackages lado a lado para usar a mesma extensão, você deve escolher a versão do Visual Studio que está associado com a extensão. Aqui estão duas alternativas:
Abra o arquivo na versão mais recente do Visual Studio instalado no computador do usuário.
Nesta abordagem, o instalador é responsável por determinar a versão mais recente do Visual Studio e incluindo que na entrada do registro escrita para a associação de arquivo. Em um pacote do Windows Installer, você pode incluir ações personalizadas para definir uma propriedade que indica a última versão do Visual Studio.
Dica
Nesse contexto, "mais recente" significa "versão suportada mais recente." Essas entradas de instalador não irá detectar automaticamente uma versão subseqüente do Visual Studio.Entradas em Requisitos do sistema de detecção e em Comandos que devem ser executados após a instalação são semelhantes àquelas apresentadas aqui e são necessários para suportar versões adicionais do Visual Studio.
As seguintes linhas na tabela CustomAction definir a propriedade DEVENV_EXE_LATEST para ser uma propriedade definida pelo AppSearch e abordado com tabelas de RegLocator Comandos que devem ser executados após a instalação. Linhas na tabela InstallExecuteSequence agendar as ações personalizadas no início da seqüência de execução. Valores em make coluna condição a lógica de trabalho:
Visual Studio.NET 2002 é a versão mais recente, se for da versão atual apenas.
Visual Studio.NET 2003 é a versão mais recente, somente se ele estiver presente e Visual Studio não está presente.
Visual Studioé a versão mais recente, se for da versão atual apenas.
O resultado líquido é que o DEVENV_EXE_LATEST contém o caminho para a versão mais recente do devenv. exe.
Linhas da tabela de CustomAction que determinam a versão mais recente do Visual Studio
Ação
Tipo
Origem
Destino
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]
Linhas da tabela de InstallExecuteSequence que determinam a versão mais recente do Visual Studio
Ação
Condição
Seqüência
CA_SetDevenvLatest_2002
DEVENV_EXE_2002 E NÃO (DEVENV_EXE_2003 OU DEVENV_EXE_2005)
410
CA_SetDevenvLatest_2003
DEVENV_EXE_2003 E NÃO DEVENV_EXE_2005
420
CA_SetDevenvLatest_2005
DEVENV_EXE_2005
430
Você pode usar a propriedade DEVENV_EXE_LATEST na tabela de registro do pacote do Windows Installer para gravar o HKEY_CLASSES_ROOT \ProgIdvalor de padrão da chave de \Shell\Open\Command, "% 1" [DEVENV_EXE_LATEST]
Execute um programa compartilhado de iniciador que pode fazer a melhor opção de versões de VSPackage disponíveis.
Os desenvolvedores de Visual Studio escolheu essa abordagem para lidar com os requisitos complexos de vários formatos de soluções e projetos que resultam de várias versões do Visual Studio. Nesta abordagem, você pode registrar um programa de iniciador como o manipulador de extensão. O launcher examina o arquivo e decide qual versão do Visual Studio e o VSPackage pode lidar com esse arquivo em particular. Por exemplo, se um usuário abrir um arquivo que foi salvo por uma versão específica do seu VSPackage, o iniciador pode iniciar esse VSPackage na versão correspondente do Visual Studio. Além disso, um usuário pode configurar o recurso Iniciar para começar sempre a versão mais recente. Um iniciador também pode solicitar que um usuário para atualizar o formato do arquivo. Se o formato do arquivo inclui um número de versão, o launcher poderia informar um usuário se o formato de arquivo é de uma versão posterior de um ou mais dos VSPackages instalados.
O iniciador deve ser um componente do Windows Installer que é compartilhado com todas as versões do seu VSPackage. Esse processo garante que a versão mais recente está sempre instalada e não é removida até que todas as versões do seu VSPackage são desinstaladas. Dessa forma, as associações de arquivo e outras entradas do registro do componente launcher são preservadas mesmo que uma versão do VSPackage é desinstalada.
Desinstale e arquivo associações
A desinstalação de um VSPackage que grava entradas de registro para associações de arquivos remove as associações de arquivo. Portanto, a extensão não tem nenhum programa associado. Windows Installer não "recuperar" as entradas do registro que foram adicionadas quando o VSPackage foi instalado. Aqui estão algumas maneiras de corrigir as associações de arquivo do usuário:
Use um componente compartilhado do iniciador conforme descrito anteriormente.
Instrua o usuário para executar um reparo da versão do VSPackage que o usuário deseja ter a associação de arquivo.
Fornece um programa executável separado que reconfigura as entradas de registro apropriadas.
Fornece uma configuração opções página ou caixa de diálogo que permite aos usuários escolher as associações de arquivo e recuperar associações perdidas. Instrua os usuários a executá-lo após a desinstalação.
Consulte também
Conceitos
Registrando verbos para extensões de nome de arquivo
Outros recursos
Registrando as extensões de nome de arquivo para implantações de lado a lado