microsoft.com Home

 
Projetos de Setup

  
  Os programas desenvolvidos para a plataforma .NET são bem mais simples de instalar que os programas tradicionais para Windows. Em muitos casos, podemos simplesmente copiar todos os arquivos para um diretório do cliente, executar diretamente de um servidor da rede ou mesmo fazer a distribuição através de HTTP.

No entanto, você pode desejar criar um “instalador” para os programas .NET por uma série de razões:

§         O programa de instalação dá uma aparência mais profissional;

§         Um programa de desinstalação é automaticamente criado;

§         O instalador pode instalar “assemblies” no GAC automaticamente;

§         O instalador cria e configura aplicativos Web no Internet Information Server;

§         O seu programa pode exigir a instalação em múltiplos diretórios diferentes;

§         O instalador pode criar facilmente entradas em diversos locais especiais do Windows, como atalhos no menu iniciar e no desktop, entradas na pasta “Favoritos” do Internet Explorer, pasta “StartUp” e pasta “Meus Documentos”;

§         O instalador pode reparar instalações defeituosas;

§         O instalador pode instalar e registrar componentes não gerenciados (“não-.NET” que eventualmente o seu aplicativo necessite, como componentes ActiveX ou DLLs diversas.

Diferentes Projetos

O Visual Studio .NETâ oferece diferentes opções de “projetos de Setup”, disponíveis no menu “File | New Project”:

Vejamos o que significa cada uma delas:

§         “Setup Wizard”: Permite criar qualquer um dos outros quatro tipos de projeto através de um assistente;

§         “Cab Project”: Permite criar arquivos .CAB, úteis para distribuir componentes ActiveX através da Internet; é essencialmente uma opção obsoleta;

§         “Merge Module Project”: Permite criar um pacote que pode fazer parte de outros projetos de seutp. Normalmente inclui um grupo de componentes que serão usados por vários projetos. Este grupo de componentes pode ser colocado em um “Merge Module” que será chamado por ouros “Setup Project” ou “Web Setup Project”; esta opção destina-se especialmente a produtos que serão usados por desenvolvedores;

§         “Setup Project”: Este é um dos projetos principais, usado para aplicativos não-Web;

§         “Web Setup Project”: Semelhante ao “Setup Project”, mas capaz de instalar projetos diretamente no IIS (Internet Information Server).

Na maioria dos casos criaremos um “Setup Project” ou, em casos de aplicativos Web (ASP.NET), um “Web Setup Project”.

Conteúdo de um “Setup project”

O projeto, quer seja um “Setup Project” ou um “Web Setup Project” contém várias pastas, dentro das quais você pode colocar arquivos. Um projeto do tipo “Setup Project” mostra inicialmente três pastas:

“Application Folder” é a pasta principal a ser criada sob “\Program Files\” (ou seu nome traduzido conforme a versão do Windows) onde ficam os executáveis, DLLs e outros arquivos principais do projeto. Você pode acrescentar arquivos clicando e arrastando a partir do Windows Explorer ou clicando com o botão direito sobre a pasta e pedindo “Add”.

Além das outras duas pastas presentes no projeto, você pode clicar com o botão direito sobre “File System on Target Machine”, pedir “Add Special Folder” e adicionar algum outro tipo de pasta.

As pastas disponíveis são descritas a seguir.

Pasta

Significado

Application Folder

Uma pasta sobre o diretório “Program Files” ou seu nome correspondente em versões traduzidas. Tipicamente é “C:\Program Files\Company Name\App Name”.

Common Files Folder

Pasta com componentes comuns compartilhados por vários aplicativos, tipicamente “C:\Program Files\Common”.

Custom Folder

Uma pasta qualquer diferente de alguma das outras pastas pré-definidas. A princípio, seu valor é o mesmo que “Application folder”.

Fonts Folder

Uma pasta virtual contendo fontes, normalmente “C:\Winnt\Fonts”.

Program Files Folder

Raiz dos arquivos de programa, tipicamente “C:\Program Files”.

System Folder

Diretório do Windows para arquivos de sistema compartilhados, tipicamente C:\Winnt\System32.

User's Application Data Folder

Pasta que funciona como repositório de dados específicos dos aplicativos, com uma cópia para cada usuário. Tipicamente é “C:\Documents and Settings\username\Application Data”.

User's Desktop

Pasta correspondente a área de trabalho de cada um dos usuários. Tipicamente é “C:\Documents and Settings\username\Desktop”.

User's Favorites Folder

Pasta “Favoritos”. Tipicamente é “C:\Documents and Settings\username\Favorites”.

User's Personal Data Folder

Uma pasta que funciona como repositório de dados de cada um dos usuários. Tipicamente “C:\Documents and Settings\username\My Documents”.

User's Programs Menu

Uma pasta que contém os grupos de programa de cada usuário. Tipicamente é “C:\Documents and Settings\username\Start Menu\Programs”.

User's Send To Menu

Pasta que indica os itens “Enviar Para” de cada um dos usuários. Tipicamente é “C:\Documents and Settings\username\SendTo”.

User's Start Menu

Pasta que contém os itens “Iniciar” de cada usuário. Tipicamente é “C:\Documents and Settings\username\Start Menu”.

User’s Startup Folder.

Pasta que contém os itens “Startup” de cada usuário. Tipicamente é “C:\Documents and Settings\username\Start Menu”.

User's Template Folder

Pasta que contém “templates” de cada usuário. Tipicamente é “C:\Documents and Settings\username\Templates”.

Windows Folder

Diretório do Windows. Tipicamente é “C:\Winnt”.

Global Assembly Cache Folder

Arquivos que devem ser instalados no GAC.

Note que várias das pastas acima têm mais sentido em aplicativos não-gerenciados, como por exemplo “System Folder” ou “Windows Folder”. Dados os conhecidos problemas de distribuição de software na plataforma Windows, você deve pensar bastante antes de sair usando todas as pastas indiscriminadamente. Na dúvida, use o mínimo de pastas possível.

Cada pasta tem algumas propriedades que podem ser alteradas:

Propriedade

Significado

AlwaysCreate

Indica se a pasta deve ser criada sempre, mesmo que vazia.

Condition

Indica uma condição que deve ser satisfeita para a pasta ser criada. Esta condição pode indicar coisas como versões do Windows e Service Pack, Idioma do Windows, nome do computador ou do usuário, se o instalador tem privilégios de administração, tipo da CPU, nome e organização de quem está fazendo a instalação.

DefaultLocation

Indica a localização da pasta.

Description

Descrição do conteúdo da pasta.

DisplayName

Nome da pasta usado na interface com o usuário.

Name

Nome da pasta. Não pode ser alterado na maioria dos casos.

Property

Indica opções adicionais da pasta, especificadas como string.

Transitive

Indica se a propriedade Condition será interpretada apenas na primeira instalação ou em todas as instalações.

Web Setup Project

Um projeto do tipo “Web Setup Project” contém duas pastas adicionais:

Pasta

Significado

Web Application Folder

Pasta principal do aplicativo no servidor Web. Normalmente fica sob “c:\InetPub\wwwroot”, mas quem indica a localização é o servidor Web.

Web Custom Folder

Pasta no servidor Web, identificada por um prefixo “http”.

A pasta principal do aplicativo tem várias propriedades que controlam características específicas de um projeto Web:

Estas opções são basicamente as mesmas que você tem ao configurar uma pasta na ferramenta de gerenciamento do IIS. Por exemplo, boa parte delas está nas opções de diretório:

Criando um “Setup Project”

A título de exemplo, criaremos um “Setup Project” para instalar o exemplo GDIPlus mostrado em um artigo anterior . Em primeiro lugar, é importante que você tenha compilado o projeto a ser instalado para a versão de “Release” (selecione em “Build | Configuration Manager”) antes de criar o projeto de Setup.

Peça depois a criação de um novo projeto do tipo “Setup Project”:

O Visual Studio .NET cria o seguinte projeto vazio. Acrescente os arquivos GDIPlus.exe e LogoNET.jpg na pasta “Application Folder”:

O Visual Studio .NET automaticamente detecta o uso de DLLs gerenciadas e automaticamente as adiciona ao projeto de setup.

O nosso projeto é bem simples, mas em casos mais complexos você acrescentaria outros arquivos não só nesta mas também em outras pastas. Depois de acrescentar todos os arquivos necessários, peça “Build | Build”:

Normalmente a construção reclama da falta do .NET Framework no projeto de Setup. Isto não é um erro, apenas quer dizer que os computadores nos quais o projeto será instalado deve ter o .NET Framework já instalado para o projeto funcionar.

Você não pode incluir o .NET Framework diretamente em seu projeto de Setup, mas pode distribuir o executável “Dotnetfx.exe” junto com seu aplicativo, criar um outro aplicativo que verifica a presença do .NET Framework e roda o instalador caso o .NET Framework não esteja instalado. Ou então incluir o arquivo “Dotnetfx.exe” e enviar instruções para que o usuário rode este programa.

O “fruto” da criação do projeto de instalação está na pasta “Debug” ou “Release” do seu projeto:

Caso o computador do usuário já tenha o “Windows Installer”, basta distribuir o arquivo com extensão “msi”. O “Windows Installer” pode não estar presente em versões antigas do Windows como Windows 95, Windows 98 e Windows NT4. Caso você não tenha certeza que o usuário possa o Windows Installer, copie o conteúdo todo do diretório e oriente para o usuário rodar o programa Setup.exe para instalar os aplicativos. Caso o Windows Installer não esteja presente, o Setup.exe irá instalá-lo.

Conclusão

O Visual Studio .NET permite a criação de projetos de instalação relativamente complexos que podem atender a maioria dos desenvolvedores. Para os casos mais complexos, sempre é possível usar um produto comercial como o Install Shield (http://www.installshield.com/) ou Wise (http://www.wise.com/).

   

© Copyright 2002 por Mauro Sant’Anna – Todos os direitos reservados

       
 


Microsoft Certified Partners
M.A.S. Informática LTDA.
Al. Campinas, 433 - 13º Andar, Conjunto 132 - Jardim Paulista
CEP: 01404-901 - São Paulo - SP, Tel.: (PABX) (011) 3284-0466/ 287-9622 - Fax: (011) 287-5593