Programação

Como criar instalador para seu programa em Qt

Para quem programa em Windows, é fácil criar instalador para programas feitos em qualquer linguagem.

Existem diversos programas para criar instaladores, dentre eles, o que já utilizei duas vezes, o Inno Setup, que pode ser pego nesse link. Porém não é sobre ele que vou discorrer nesse artigo, porque o intuito é criar um instalador para programas feitos em Qt e não faz sentido que o instalador não seja multiplataforma também. Só que o procedimento é um pouquinho mais trabalhoso, mas com certeza é válido.

Como criar instalador com Qt

O procedimento não é autoral. Na verdade, está na documentação do próprio Qt, como você pode conferir aqui (em inglês). Os passos são poucos, porém elaborados:

1 – Criar um diretório de empacotamento que conterá todos os arquivos de configuração e instaláveis.

2 – Criar um arquivo de configuração que contenha a informação sobre como construir o instalador binário e repositórios online.

3 – Criar um arquivo de informação do pacote que contenha toda a informação sobre os componentes instaláveis.

4 – Criar o conteúdo do instalador e copiá-lo para o diretório do pacote.

5 – Usar o binarycreator para criar o instalador. Vejamos então.

Criando um diretório de empacotamento

Crie uma estrutura de diretório que reflita a arquitetura de componentes do programa e permita que o instalador seja estendido no futuro. O diretório deve conter os diretórios chamados configpackages.

Criando um arquivo de configuração

Dentro do diretório config, devemos criar um arquivo chamado config.xml com o seguinte conteúdo:

Criando um arquivo de informação de pacote

Crie um arquivo chamado package.xml com o seguinte conteúdo e coloque-o no diretório meta:

O parâmetro Display Name mostra o título desejado. Em seguida, Description exibe a mensagem sobre o que será feito.

O parâmetro Version é para updates do instalador nesse caso.

O arquivo de licença é especificado em Licenses, que inclui uma mensagem informativa como título do item.

O parâmetro Default pode ser true para marcar o item por padrão ou script, para definir o comportamento por script.

Criando o conteúdo do instalador

O conteúdo a ser instalado deve ser armazenado no diretório data. Como há somente um componente, coloque os dados no diretório packages/com.vendor.product/data.

Instalando o Qt Installer Framework

Baixe e instale o Qt Installer Framework no diretório do Qt. Ele será utililzado para a criação do instalador. Vá até o site oficial para baixá-lo.

Estrutura completa do instalador

Para esse exemplo, incluí apenas o binário, já que suas dependências estão devidamente dispostas no meu sistema. Porém, para que seja possível rodá-lo em sistemas que não contemplem todas as dependências, podemos usar um macete, mas devo explicar previamente a estrutura do programa no sistema operacional – no caso, o Linux.

Estrutura completa do instalador básico (apenas o binário)

Essa é a estrutura básica criada:

Como criar instalador - estrutura de diretórios

Para simplificar a criação da estrutura (em Linux), esse comando dará “aquela” força:

Já garantimos que não faltará diretório. Agora vamos criar os arquivos do diretório meta:

E agora os arquivos do diretório data:

Não se esqueça de colocar o binário no diretório data e popular os arquivos com os respectivos conteúdos.

Estrutura do programa criado

No Linux, temos algumas maneiras diferentes de instalar um programa.

Path do sistema

Existem os caminhos padrão de sistema. Em /lib estão as bibliotecas do sistema.  em /usr/lib estão bibliotecas de programas do usuário e existem diversos outros diretórios de libs conforme o padrão POSIX. O mesmo acontece para os binários. Os caminhos padrão do sistema para binários pode ser visto com o comando:

Os diretórios pertencentes às bibliotecas que estão dispostas no sistema podem ser vistos nos arquivos contidos em /etc/ld.so.conf.d.

Se desejar utilizar os caminhos padrão de sistema, devemos criar a estrutura de diretórios fiel à estrutura do sistema operacional. Como deveremos também recolher as dependências do nosso programa para redistribuição, uma opção seria:

Isso criará a estrutura de diretórios com todas as dependências necessárias. Nesse caso, não deixe o binário do seu programa “solto” no diretório data. Crie o diretório (se não existir) usr/bin/ e coloque-o dentro do diretório bin.

No path de instalação especificado em seu instalador, coloque /, para instalar na raiz do sistema. Quando for executar o instalador, será necessário fazer com privilégio de root, usando sudo su ou su ./SeuInstalador.

Instalando no home do usuário

Se optar por instalar no home do usuário, será necessário apontar as dependências, criando os apontamentos das bibliotecas em um arquivo em /etc/ld.so.conf. Depois, será necessário carregar as bibliotecas. Para isso:

Ou ainda, deixe todas as dependências no mesmo nível de diretório. Esse é o primeiro nível em que o binário do programa procura por suas dependências, buscando-as posteriormente nos diretórios de sistema conhecidos, caso não seja encontrado localmente.

Criando o instalador binário

Hora de criar o instalador. Para tal, chamamos o programa binarycreator.exe no Windows, ou binarycreator  no Linux, passando o arquivo de configuração e o nome para o instalador.

E em Linux (considere que estou utilizando o meu diretório home, adeque-o):

No caso do Linux, o diretório do binarycreator fica dentro do diretório do Qt, em /Tools/QtInstallerFramework/3.0/bin/binarycreator.

A primeira tela da execução é a da imagem de destaque. As próximas telas são:

Pasta de instalação

O caminho pode ser mudado pelo usuário, caso não queira deixar o padrão especificado pelo seu instalador.

Como criar instalador - seleção de diretório

Seleção de componentes

No caso, só temos um nesse tutorial. Se houvesse mais, poderíamos fazer a seleção desejada.

Como criar instalador - seleção de componentes

Licença e aceitação

Na próxima tela, exibimos a licença de software e aceitação.

Como criar instalador - licença e aceitação

Pronto para instalar

E a tela final antes da instalação.

Como criar instalador - Pronto para instalar

Instalação completa

Essa tela é apenas informativa, a instalação já estará concluída ao chegar nesse ponto.

Como criar instalador - instalação concluída

Como citado anteriormente, tenho todas as dependências, portanto não as recolhi para o diretório do instalador.  repare que criei o diretório SimpleSerialProgram, que resultou nesses arquivos após a instalação:

Como criar instalador - diretório do programa instalado

Agora você já está apto a redistribuir seus programas em Qt de forma elegante!

One comment

Comments are closed.

%d blogueiros gostam disto: