Inno Setup: como criar um instalador para aplicações Web

Inno Setup: como criar um instalador para aplicações Web

Nesta postagem mostrar um tutorial básico de como criar um instalador usando a ferramenta Inno Setup. Essa ideia nasceu porque passei algum tempo desenvolvendo um sistema web que precisava ser instalado no computador de um cliente. Então, ao procurar algo compreensível sobre essa ferramenta tive algumas algumas dificuldades.

O resultado final é um instalador personalizado de sua aplicação como esse:

Inno setup resultado
Instalador customizado criado com Inno setup


No desenvolvimento de softwares sabemos das limitações do desenvolvimento desktop e da flexibilidade do desenvolvimento web. Assim, recentemente aceitei o desenvolvimento de uma aplicação. No final desta jornada gostaria de entregar o produto, no entanto não queria instalar as ferramentas separadamente, mas criar um instalador que empacotasse o serviço.


Antes de qualquer coisa temos que ter uma aplicação web para “empacotar”. Se você usa o PHP, por exemplo, sua vida pode ser mais fácil. Mas no meu caso estou tentando empacotar uma aplicação Java web. Então segue alguns detalhes das tecnologias que eu usei:

Características da aplicação

  • Linguagem – Java EE
  • Interface – JSF
  • Persistência – JPA – Eclipselink
  • Base de dados – Postgres
  • Servidor de aplicação – Tomcat 8.5

Preparando sua aplicação/ambiente de trabalho

1 – Em primeiro lugar você deverá fazer download das ferramentas Inno Setup, Tomcat, Postgres. Lembrando que você irá precisar da versão que faz a instalação do banco de dados e não faz nenhuma configuração perguntando coisas para o usuário.

2 – Utilizando o inno script studio você poderá utilizar o wizard para iniciar a construção do seu setup. Baixe e instale o software para que você possa criar seu instalador personalizado.

3 – Antes de continuar você deverá gerar um arquivo .war da sua aplicação usando o eclipse ou o netbeans. Os arquivos .war são gerados para empacotar uma aplicação Java contendo todas as dependências necessárias para a aplicação ser executada. Ele é muito parecido com um arquivo JAR, porém, a única diferença é que ele não pode ser executado, esse arquivo precisa de um servidor web para ser executado.

No Netbeans esse arquivo é gerado dentro da pasta do projeto na subpasta chamada “dist”. Se você acessou o seu projeto e essa pasta não existe, você pode tentar usar o atalho Shift + F11 para construi-la. Mas lembre-se cada IDE de programação funciona de forma diferente, tente consultar como gerar esse arquivo usando cada uma delas.

Preparando seu instalador no inno setup

Uma das principais desvantagens de usar o Inno setup é que ele possui alguns scripts bem pouco intuitivos. Essa linguagem é de difícil leitura e não tem muitas semelhanças com linguagens de programação tradicionais.

Visando facilitar a sua vida, eu desenvolvi um script meio “pré-cozido” que você pode usar. Lembre-se que antes de executá-lo você deve preencher esse script com as informações corretas, como: nome da aplicação, publicador, url, caminho para os arquivos, etc.

#define MyAppName "nomeDaSuaAplicação"
#define MyAppVersion "1"
#define MyAppPublisher "Nome do publicador"
#define MyAppURL "https://www.computersciencemaster.com.br/"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{093C2115-C813-4E28-AC46-1489A24A2508}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputBaseFilename=setup
SetupIconFile=E:ProjetosJusHelpInstaladorjusHelpIcon.ico
Password=dx262524
Encryption=yes
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "portuguese"; MessagesFile: "compiler:LanguagesPortuguese.isl"

[Files]
Source: "E:Projetospostgresql-9.6.3-3-windows-x64.exe"; DestDir:{tmp};
Source: "E:ProjetoscreateDatabase.bat"; DestDir: "{tmp}"; DestName: "createDatabase.bat";
Source: "E:Projetosapache_tomcat_8*"; DestDir: "{app}tomcat"; Flags: ignoreversion recursesubdirs createallsubdirs 
Source: "E:Projetosstart.bat"; DestDir: "{app}";


[Run]
Filename: "{tmp}postgresql-9.6.3-3-windows-x64.exe"; Flags: runminimized; StatusMsg: Instalando PostgreSQL; Parameters:  --mode unattended --unattendedmodeui minimal --superpassword ColoqueSuaSenhaDoBancoAqui --prefix C:postgrespostgres --datadir C:postgresdata 
;--create_shortcuts 0 (Adicione para não criar atalhos no postgre)
Filename: "{tmp}createDatabase.bat"; Parameters: """{pf32}"" ""{pf32}"""; StatusMsg: Atualizando o banco de dados;
Filename: "{app}tomcatbinservice.bat"; Parameters: "install seuApp";  StatusMsg: Instalando o serviço do Tomcat;
Filename: "{app}start.bat"; Parameters: """{pf32}"" ""{pf32}""" ;  StatusMsg: Iniciando o serviço;

[UninstallRun]   

Filename: "{app}tomcatbinservice.bat"; Parameters: "uninstall seuApp"

Arquivos de configuração necessários

Os arquivos .bat que estão presentes no instalador do código acima, fazem a configuração do banco de dados e também do serviço do tomcat. Apesar do usuário não ter nenhum acesso a esses arquivos, você pode configurar detalhes da base de dados como usuário, senha, nome da base etc.

Veja um exemplo:

createDatabase.bat

Esse arquivo define uma senha e um usuário para o banco de dados e também cria um novo banco de dados no Postgres.


@Echo off
set PGUSER=postgres
set PGPASSWORD=suaSenha
c:
cd 
cd C:postgrespostgresbin
@echo "Aguarde enquanto o banco de dados é atualizado..."
psql -U postgres -c "create database nomeDaBase"

start.bat

Esse arquivo simplesmente faz o início da aplicação web, assim você pode acessar esse serviço pelo seu navegador.


net stop seuApp
net start seuApp

start "" "http://localhost:8080/SeuApp/"

E ai você conseguiu criar seu instalador?

Se você conseguiu, deixe nos comentários. Se você quiser customizar esse código, fique a vontade. Não esqueça de marcar esse post aqui que vamos ficar felizes em mostrar novas soluções que partiram desse post!

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e forma com que ela pode transformar vidas!

Este post tem 2 comentários

  1. Unknown

    Estou buscando isso, queria criar um setup da minha aplicação que usa JSF e postgres, com esse passo a passo consigo criar?

Deixe uma resposta