Como meu processo de desinstalação pode lidar adequadamente com a restauração de entradas do registro?

StackOverflow https://stackoverflow.com/questions/402017

  •  03-07-2019
  •  | 
  •  

Pergunta

Às vezes, é necessário modificar as configurações do Registro do Windows durante uma instalação de aplicativo. Recentemente, fiquei frustrado com aplicativos que não restauram essas configurações quando não são desinstaladas. Como pensei mais sobre isso, ocorre -me que pode não haver uma maneira boa (ou válida) de salvar e restaurar as configurações do registro. Veja a seguinte sequência de eventos, por exemplo:

  1. O aplicativo A possui a ação aberta para a extensão de arquivo .abc.
  2. O aplicativo B está instalado e sequestra a ação aberta para extensão de arquivo .abc.
  3. O aplicativo A é desinstalado.
  4. O aplicativo B é desinstalado.

Na etapa 3, se o aplicativo A for inteligente o suficiente, ele detectará que não possui mais a ação aberta e, portanto, ignorará qualquer tentativa de restaurá -lo.

Na Etapa 4, há alguma ação válida que o aplicativo B possa executar?

  • Fazer nada deixa a ação aberta apontando para um executável excluído.
  • Restaurar o ponteiro para o aplicativo A também é um executável excluído.
  • Perguntar ao usuário não é permitido, pois isso geralmente é considerado muito além das habilidades técnicas do usuário típico. Se você não concordar, substitua uma mudança de registro diferente nas etapas 1 e 2 que você acha que ficaria fora de escopo para o usuário responder.
  • A exclusão da ação também exigirá que o usuário tome uma decisão desinformada posteriormente, ou que faça alguma função indisponível para o usuário.

Esta é apenas uma das muitas situações ruins que posso imaginar, onde não há uma solução óbvia e única "correta". Meu próximo projeto exigirá alterações no registro durante a instalação e eu gostaria de saber a prática melhor ou recomendada para a desinstalação. Infelizmente, fui queimado por más práticas de desinstalação nos pacotes comerciais atuais, por isso estou ciente de que não há consenso sobre as melhores práticas aqui, e é muito trabalho fazer certo, ou então uma falha de design no registro , ou ambos.

Este é um problema de programação muito real para mim. Estou marcando subjetivo porque não tenho certeza se há algum tamanho único certo Responda a isso. Por favor, sinta -se à vontade para discordar.

Foi útil?

Solução

Se você está escrevendo o aplicativo B, eu diria que não sequestre a ação aberta da extensão .ABC em primeiro lugar. Durante a instalação, pergunte ao usuário se ele deseja associar arquivos .abc ao seu programa. Durante a desinstalação, verifique se o seu programa ainda está associado. Nesse caso, desassocie a extensão do arquivo; caso contrário, deixe -o em paz.

Se houver outro aplicativo que ainda desejar ser associado a arquivos .ABC depois de desinstalar B, resistente - faça o usuário corrigi -lo. Afinal, ele consentiu em associar arquivos .ABC ao seu aplicativo e desinstalar seu aplicativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top