Pergunta

É possível introduzir a funcionalidade ClickOnce para uma aplicação existente?

O cenário é: Versão 1.0 já está instalado nas instalações do cliente. Gostaria de enviar-lhes um novo pacote de instalação que irá atualizar para 1.1, que tem funcionalidade ClickOnce, tornando assim futuros upgrades "sem esforço".

Exceto que, existem outras soluções para este tipo de problema?

PS: O aplicativo original foi desenvolvido com Visual Studio 2005 (isto é, NET 2.0). Estou usando Visual Studio 2008 agora.

Foi útil?

Solução

Não, não é possível com um cenário de implantação ClickOnce padrão.

ClickOnce é uma instalação em modo seguro no lado do cliente. Ele não vai saber sobre a versão 1.0 que já está instalado. É simplesmente indo para verificar para ver se a sua GUID já foi instalado via ClickOnce e se assim atualizá-lo, mas apenas se a versão anterior foi implantado via ClickOnce.

No seu caso, se o usuário instalou versão 1.1, ambas as versões serão instalados lado a lado. Versão 1.0 não será atualizado, porque ClickOnce não sabe que há uma associação desde que foi implantado através de um método diferente. Se eles não querem que a versão 1.0 mais, eles vão precisar removê-lo manualmente. Assim que tiver a versão 1.1 implantados via ClickOnce, actualizações subsequentes irá funcionar corretamente.

Não pense ClickOnce como algo que você está "incluindo", pense nisso como um método de implantação.

Como alternativa:

Devo esclarecer que o que você está procurando não é possível com a implantação ClickOnce padrão. No entanto, você mencionou que você está indo para lhes enviar um arquivo de configuração inicial. Nesse caso, você pode ter uma solução que é possível:

  1. Script o arquivo de instalação para remover a instalação versão 1.0 automaticamente
  2. Script o arquivo de instalação para iniciar a instalação ClickOnce.

Para actualizações subsequentes, basta apontar o usuário para o pacote de instalação ClickOnce "puro", e suas atualizações deve funcionar bem.

Outras dicas

certeza vai fazer para testar sua implantação ClickOnce muito bem no ambiente da sua cliente. Eu estou omitindo detalhes aqui, mas há muitos problemas com ClickOnce. Tenho vindo a apoiar uma aplicação ClickOnce para 3,5 anos agora e ter executado em muitos problemas com manifestos, ter que apagar manualmente as pastas de armazenamento caixa de areia para que as atualizações instalar corretamente, etc. - se você pesquisar online para problemas ClickOnce você vai encontrar bastante algumas questões nos fóruns MSDN e em outros lugares, muitos dos quais MS não parecem querer resolver como eles têm sido aberto desde Visual Studio 2005.

Além disso, estar ciente de uma pegadinha potencial no ClickOnce antes do .NET 3.5 SP1. Se você não tiver o seu próprio certificado de implantação de software a partir de um CA reconhecidos pelas máquinas do cliente, Visual studio utiliza um certificado de "temporário" (* .pfx) que expira um ano a partir da criação. Após esse tempo, posteriores versões de atualização provavelmente não vai instalar, e vai mostrar aos usuários mensagens assustadoras sobre expiração do certificado. Microsoft corrigiu isso no .NET 3.5 SP1, mas você tinha que cavar através das notas de lançamento para encontrar os comentários que os certificados temporários ou permanentes não eram mais necessários. Portanto - se você não tem um certificado CA público, e você estará apoiando este aplicativo por algum tempo, em seguida, verifique se você está no .NET 3.5 SP1

.

Dependendo da complexidade do seu cenário, desde que você perguntar sobre outras soluções, que acabou usando a "rolar o seu próprio" abordagem que é algo como isto.

Cada incrementos libertação atualizados a versão do assembly conforme necessário.

compilação contém um passo personalizado para auto-gerar um arquivo com a nova versão de montagem.

o projeto de implantação copia o arquivo da versão para o diretório de saída com a MSI.

Cada vez que o aplicativo é executado instalados, ele compara sua própria versão para a versão no arquivo de versão na pasta de implantação. Se eles diferem, sair da aplicação e iniciar o MSI, o que nos propusemos para remover automaticamente versões de aplicativos mais antigos.

Este é um "ClickOnce pobre homem" para um ambiente onde não há ferramentas de implementação de aplicativo que seja AVL (nem mesmo AD publicidade aplicação), de modo que fazer. Mais uma vez, esta abordagem pode não ser suficiente sofisticado para você, mas ele funciona muito bem para nós.

O melhor de sorte.

A melhor maneira que eu conheço seria enviar-lhes um programa de instalação que:

  1. desinstala a versão atual
  2. inicia o aplicativo ClickOnce que residem na web.

Com isso, você teria uma experiência de atualização razoável, e de lá para fora, ClickOnce pode lidar com as atualizações em seu próprio.

Eu acho que neste caso a solução "mais fácil" seria usar apenas a implantação ClickOnce para a versão 1.1 e como parte dessa nova versão do seu aplicativo tem um arquivo de configuração padrão com uma bandeira de primeira execução de algum tipo que , quando começa a correr pela primeira vez pelo usuário e vê que a bandeira de primeira execução, ele procura a versão anterior, as cópias mais de quaisquer definições de configuração existentes, e em seguida, desinstala a versão anterior automaticamente.

Seria necessário alguma programação de sua parte, mas é a solução que eu liquidada em em um trabalho anterior para fazer uma tarefa semelhante ao atualizar um aplicativo utilitário para usar Clickonce onde ele não tinha isso antes.

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