 Gerando 
meu pacote de instalação - Windows Installer.
  Gerando 
meu pacote de instalação - Windows Installer.No artigo - Gerando meu primeiro pacote de instalação no VB.NET - eu mostrei como criar um pacote de instalação para sua aplicação VB.NET.
Neste artigo eu vou abordar algumas questões que não foram mencionadas no artigo anterior , como a instalação do .NET Framework junto com sua aplicação e outros detalhes de personalização que veremos.
Para não perder tempo vou partir do ponto no qual já estamos com a aplicação VB.NET pronta esperando para gerar o pacote de distribuição.
| Você pode 
    carregar qualquer projeto já pronto no VB.NET ; eu vou carregar um projeto 
    que mostra como usar o controle TreeView. A aparência do projeto em execução é exibida ao lado. Não estou me preocupando com o projeto em si. Vamos focar nossa atenção na geração do pacote de instalação para este projeto. Obs: Em um outro artigo eu vou falar sobre o projeto Treeview em detalhes 
 |  | 
| Abaixo temos as opções de projetos de instação disponíveis no VB.NET. | |
| No Visual 
    Basic.NET não existe mais o Package & Deployment , não adianta 
    procurar . O VB.NET inclui agora modelos de projetos que permitem criar um pacote de instalação Windows (Windows Installer) para distribuir sua aplicação. Um projeto Windows Installer é um tipo especial de projeto do Visual Studio.NET que não é específico da linguagem VB.NET.  Nas versões anteriores do Visual Basic os 
    pacotes eram baseados em arquivos de scripts , no VB.NET tudo mudou (para 
    variar  Veja ao lado as opções de modelos de projetos para gerar pacotes de instalação no VB.NET 
 |  | 
Então vamos ao trabalho...
Criando um projeto Windows Installer
| 1- Após 
    verificar que a aplicação esta rodando sem problemas vamos gerar o pacote de 
    instalação. a- Abra o Solution Explorer e clique com o botão direito do mouse sobre o nome do projeto b- Selecione a opção Add do menu c- a seguir clicando na opção New Project... |  | 
| 4- Na janela
    Add New Project selecione o tipo de projeto - 
    Setup and Deployment Projects a- a seguir clique em Setup Project b- Altere o nome do projeto para TreeView1 c- Altere também a localização(Location) para o local onde deseja salvar o pacote. d- Clique em OK e projeto Treeview1 será incluído ao seu projeto já existente. Dica- Se você alterar a localização para a mesma usada pelo projeto da aplicação principal todo o projeto e arquivos de Setup serão criados sob a pasta do projeto principal |  | 
Vamos agora configura as opções de construção(build) da solução , senão toda vez que a sua aplicação for executada a partir do IDE , tanto o fonte como o projeto de setup serão construídos e isto pode consumir algum tempo extra indesejável. Para mudar este comportamento faça o seguinte:
|  | - Pronto ! , agora o arquivo de setup não será criado automaticamente . Para construí-lo manualmente clique com o botão direito do mouse no projeto de setup e escolha build. | 
Definindo os Designers para o seu projeto de Setup
Ao criar um projeto de Setup o VB.NET oferece 
várias opções de designers,  cada um pode ser usado para configurar um 
aspecto do nosso programa de setup, Para ver todos os descritores (traduzi 
assim a palavra designers  ) que você pode usar clique com o botão direito do mouse no item solution no
Solution Explorer (do projeto de Setup) e selecione 
a opção View: (temos abaixo a figura da janela 
obtida)
 
) que você pode usar clique com o botão direito do mouse no item solution no
Solution Explorer (do projeto de Setup) e selecione 
a opção View: (temos abaixo a figura da janela 
obtida)
|  | 
 | 
Além disto você pode definir algumas opções básicas da janela Project|Properties (propriedades do projeto) como :

Incluindo arquivos e atalhos
Uma das etapas mais importantes na criação de um projeto de setup é definir quais arquivos você quer copiar para o computador de destino. Usando o descritor File System você pode definir quais arquivos serão incluídos para uma pasta reconhecida do sistema, uma pasta para fontes, a GAC ou mesmo a sua pasta Meus Documentos.
Pode também incluir arquivos em um caminho absoluto ou para um diretório que o usuário escolher para a aplicação. A lista de pastas suportadas é a seguinte :
|  |  A janela File System contém dois painéis; na esquerda a lista de pastas e na direita a lista de arquivos para a pasta selecionada. 
 Além disto , como você pode ver na figura da esquerda, temos a opção de incluir uma pasta especial. Basta clicar com o botão direito do mouse no painel da esquerda e escolher a opção. | 
Arquivos de suporte
Você pode incluir manualmente arquivos que sua aplicação vai usar (bitmaps , arquivos de dados ,etc..). Basta clicar na lista de arquivos com o botão direito do mouse e escolher Add File.
| Você pode incluir também projetos de saida como o .NET assembly na sua aplicação. Isto assegura que o arquivo será automaticamente regenerado a cada vez que você construir o setup. Para incluir um projeto de saida clique com o botão direito do mouse em Application Folder e escolha Project Output. |  | 
|  | - 
    Primary Output inclui o construtor assembly para o projeto 
    referenciado e qualquer assemblies dependente. - Esta é a opção mais comum , mas você pode também definir a opção Configuration para Release .NET para assegurar que o programa Setup sempre irá usar a versão release do assembly. - Localized Resources - utiliza o satelite assemblies para o projeto que contém recursos locais específicos - Source Files - inclui todos os arquivos de textos para o projeto. Qualquer outra assemblies dependente é referenciada de forma automática. Neste caso , a assembly dependente ( mscorlib,cfgmscorlig.dll) é incluida. Ao incluir um .NET Assembly , os arquivos da .NET framework será automaticamente incluída no setup, permitindo a você instalar sua aplicação em computadores que não possuem na plataforma o runtime do .NET. (Isto vai aumentar o tamanho do seu arquivo final entre 100 K a 15 Mb) 
 Se o seu cliente já possui a plataforma .NET instalada exclua estes componentes para economizar espaço.(veja figura acima) | 
Para incluir atalhos no seu projeto de Setup fazemos assim :
| Para incluir um icone faça o seguinte: 
 | 
A esta altura você já pode construir o seu projeto de Setup e gerar o arquivo .msi usando-o para instalar a aplicação Setup. Mas vamos continuar ...
Personalizando a interface com usuário
| No descritor 
    - User Interface - podemos visualizar as 
    janelas que o usuário irá ver. As janelas estão exibidas na ordem na qual 
    serão apresentadas,  e estão agrupadas por estágio de setup. Você poderá ver duas versões listadas , uma para uma instalação de usuário padrão e outra para uma instalação administrativa. (conforme figura) Para acessar a instalação administrativa use o parâmetro /a. (geralmente esta opção e fornecida par uma instalação em rede). Para ver as propriedades de cada item clique sobre o item e veja a janela de propriedades.(conforme figura) 
     Não tem jeito de você visualizar os itens a não ser executando o setup. | 
     | 
Você pode dar uma personalizada nesta interface...
 )
)

| A janela - Customer Information - tem uma propriedade interessante ; a propriedade SerialNumberTemplate pode ser customizada para não permitir que um usuário instala sua aplicação sem número serial válido. O modelo também determina como o número serial será formatado. Mas você não pode fazer a validação deste número diretamente, mas terá que usar as rotinas embutidas no produto Windows Installer que irá fazer a validação. Funciona assim : No modelo SerialNumberTemplate você pode usar os seguintes caracteres: 
 Qualquer outro caractere é tratado como um literal. O algorítmo de validação esta embutido no serviço do Windows Installer. Ele soma todos os dígitos e divide por 7. Se o resto for igual a zero a validação esta ok senão será inválida. Por exemplo : se usarmos o modelo <%%M-##-##> teremos três caixa de texto ; os quatro últimos caracteres devem ser dígitos ; o terceiro caractere deve ser a letra M e a soma dos primeiros dois dígitos deve ser divisível por 7. (um código válido seria : (77M-00-00) Nota: Lembre-se que somente os caracteres: % , ? requerem validação. 
 |  | 
Para exibir a caixa de validação você deve definir a propriedade ShowSerialNumber igual True. Abaixo um exemplo para o caso estudado mostrando uma validação com sucesso e uma validação incorreta.
|  |  | 
Para terminar vou falar do descritor Registry . Nele podemos incluir entradas no registro do sistema. Podemos localizar um nó no registro e incluir chaves e valores com um click de mouse.
| Para o caso 
    estudado eu vou incluir no registro o nome da empresa e o nome do usuário 
    que instalou o sistema . As variáveis usadas neste caso são identificadas por estarem envolvidas por colchetes. Em tempo de execução o Setup irá substituir as variáveis [Manufacturer] e [ProdutcName] e [CustomerName] e irá criar uma entrada no registro do Windows |  | 
Como você notou o processo de geração de Setup ficou mais profissional permitindo uma personalização em muitas de suas etapas. O assunto não foi esgotado , pelo contrário , mostrei somente a ponta do iceberg. Com certeza voltarei a este assunto em futuros artigos...
Até lá... 
José Carlos Macoratti