Gerar novo MSI Installer e manter a versão

Temos um grande recurso ao trabalhar com .NET Framework para gerar instaladores Windows Installer pois de forma simples e rápida, se gera um pacote de instalação para seu projeto WIndows Form com versionamento e tudo.



Este artigo visa demonstrar como se criar um instalador com a mesma versão que a anterior e poder mesmo assim instalar sem que apareça a mensagem: "Já foi instalada uma outra versão deste produto. A instalação dessa versão não pode continuar. Para configurar ou remover a versão existente desse produto, use "Adicionar ou remover programas" no "Painel de Controle"." Impossibilitando o usuário de instalar normalmente e fazendo com que ele tenha que ir até o Painel de Controle e faça o que a mensagem pede.

Tudo bem que não há dificuldade nenhuma em se fazer isso, mas e se o seu aplicativo tiver a rotina de atualização automática ao detectar uma nova versão disponível?
OU >> Se o seu cliente quiser que o mesmo instalador já desinstale o anterior e instale o novo, sem que ele tenha que intervir e ir até o painel de controle fazer isso?

Instaladores MSIs podem ser criados no Visual Studio através do Project Setup. Se você não souber como se usa esta ferramenta, veja num artigo do site do Macoratti. Caso você já saiba como se gera o instalador, vejamos como gerenciá-lo melhor.



Como podemos ver, este pacote leva um versionamento, este pode ser alterado/incrementado toda vez que houver uma nova alteração/implementação na sua aplicação. De forma automatizada, toda vez que você for atualizar seu aplicativo na máquina que este se hospeda (no cliente, por exemplo), é este versionamento que irá permitir esta nova instalação.
Veja exemplo abaixo:

- Você cria uma aplicação e instala no cliente, este instalador levará a versão 1.
- Você programa algo novo para sua aplicação e gera um novo instalador, este levará agora a versão 2.

Porém o problema é quando por algum motivo o usuário necessitar reparar o aplicativo instalado, neste caso, será executado o mesmo instalador, sorte dele se ele tiver o instalador na máquina ou se este estiver acessível para ele por download ou por qualquer outra forma.

Sorte dele também, se você não tiver gerado (buildado) novamente este instalador, mas sem alterar a versão. Pois se você tiver feito isso, irá aparecer aquela mensagem que falei.
Por isso, se você precisar gerar um novo instalador com a mesma versão, deve-se alterar um cara chamado ProductCode! E isso explica a razão deste artigo.

Disse anteriormente que toda vez que for feita alguma alteração no aplicativo e gerar um novo instalador, é necessário ALTERAR A VERSÃO, mas sabemos que o versionamento pode ser algo que não é de nosso controle, principalmente quando trabalhamos em equipe, e que muitas vezes seja necessária uma autorização superior para incrementar a versão.

Neste caso, será necessário então alterar o ProductCode e o UpgradeCode do instalador, pois são eles que dizem que "há uma alteração no aplicativo", mas que não se fez necessária a alteração da versão. Muitas vezes se deixa de programar algo na versão que foi pra produção por que esqueceram ou sei lá por que, seja qual for o motivo, não foi! (fato), algo ficou faltando.
Então nesse caso, será necessária a alteração da aplicação, a geração de um novo Guid para o PC (ProductCode) e UC (UpgradeCode) e a geração desse novo instalador mantendo a mesma versão.

Veja como alterar essas Guids:


- No Visual Studio, clique no seu Setup Project e aperte F4, abrirá o painel de propriedades.
- Clique em ProductCode depois em . Clique em "Gerar nova".


-Clique em UpgradeCode, depois em . Clique em "Gerar nova".



Pra sintetizar, é obrigatória a alteração dessas Guids para dizer que se trata de um novo instalador até quando se incrementa a versão, perceba que o Visual Studio pergunta se você deseja que ele gere um novo ProductCode pra essa nova versão, o que comprova de fato que será necessária a alteração deste para uma maquina que já tenha seu aplicativo instalado só que com uma versão anterior.

Sem dúvidas, se você trabalhar com aplicativos que precisem de versionamento, você um dia vai se deparar com pelo menos algo parecido, então, fica a dica.
Obs: Perdi um tempo pra descobrir isso num projeto que estive trabalhando, e não achei nada relacionado na web que me ajudasse, agora já temos. ;)

Até mais...



Comentários
Nome:
Link:
Mensagem: