Mep Installer 3: suporte a Windows 7, UAC e 64-bit

por Marcos Elias

Estou trabalhando no Mep Installer 3.0 (Codename Mondego), que deve ser lançado no começo de 2010. Se você desenvolve software para Windows e gostaria de ter um instalador profissional e bonito, convido a conhecer um pouco da história dele, e o motivo pelo qual é baseado no Inno Setup em vez de ser um projeto escrito do zero.

O Mep Install foi um antigo projeto de instalador que eu fiz, baseado em um arquivo INI com poucas opções, que simplesmente copiava arquivos de uma pasta para uma subpasta da “Arquivos de programas”. O programa precisava evoluir, mas a falta de tempo não ajudou. Eu não tinha acesso a internet em casa na época, o tempo era muito corrido e demorava para pesquisar novas coisas. A maioria dos instaladores que eu conhecia eram pagos (Wise, Install Shield, e outros pequenos…). Eis que um maravilho dia me deparei com o Inno Setup (ainda sem conexão com a web em casa). Não acreditei no que vi, fiquei apaixonado pelo programa. Fiquei mais louco ainda ao ver que era open source. Logo pensei “ha, eu vou adaptar ele pra mim”. Afinal esse é um dos objetivos de aplicações open: a adaptação para uso pessoal.

Um instalador com visual dos assistentes do Windows 2000 é legal, mas eu já estava enjoado, todo mundo usa assim. Eu usava apenas o Office para editar textos, desconhecia Linux – e talvez por isso desconhecia o maravilhoso OpenOffice, que na época nem era tão maravilhoso assim. Bem, o uso do MS Office me rendeu um fruto que guardo até hoje: o estilo visual do instalador. Tela de instalação maior, mantendo um “que” de Windows 2000, mas com cara de Office (2000/XP/2003). Pois bem: meu instalador teria essa cara (a cara do instalador do Office; note que isso era antes do Office 2007).

Como o Inno era open source, fui estudando ele e adaptei o projeto para uso pessoal. Ficou interessante, decidi traduzir e liberar para quem quisesse. Na época não divulguei o código fonte, a licença do Inno não exigia isso (é uma licença um pouco liberal) e a disponibilização dele traduzido não me parecia tão interessante na época.

A última versão trabalhada (2.1.3) foi baseada nas primeiras versões do Inno Setup 5.x., o que foi bom, permitindo que o programa não ficasse defasado tão cedo. As primeiras foram baseadas no 3.x. Ainda hoje várias pessoas gostam do Mep Installer 2 (Codename Aricanduva) – seja pelo visual ou pela tradução completa. Mas ele mostra sinais de software antigo: no Vista ou 7 a interface de criação pede elevação do UAC, o que não é tão agradável; a elevação deveria ser solicitada apenas ao rodar o instalador. Sem muito tempo para mexer em mudanças “grandes”, acabei deixando ele parado. Até esses dias.

Peguei uma versão atual do Inno, 5.6.3, e estou trabalhando nela. Como é um projeto “paralelo”, com modificações que não serão inclusas na versão original do Jordan Russell, não seria certo usar o nome dele. Por isso uma troca de nome foi necessária, nada melhor do que Mep Installer, no caso, “continuando a série”. Ele é um “fork”, uma derivação do Inno. Não se mantém atualizado ao mesmo tempo com o original, e as modificações que fiz são basicamente visuais, algo que parece que não faria muito sentido no Inno Setup. Fica como uma “alternativa”. Eu uso, amigos usam, então abri ao mundo para quem mais quiser usar, de forma livre. As versões anteriores receberam vários elogios, inclusive foram postadas no Superdownloads e na Softpedia.

Nas versões anteriores, tanto as baseadas no Inno 3.x como 5.x, o Mep Installer adicionava algumas coisas que “quebrava a compatibilidade” com os projetos do Inno. Coisas simples, umas linhas do script que fossem removidas ou comentadas já solucionava o problema, mas enfim, quebrava. Para a versão 3.0 pretendo deixá-lo o mais compatível possível com o Inno Setup. Isso quer dizer que um .iss poderá ser compilado no Mep Installer, e um .mpi poderá ser compilado no Inno Setup. A extensão é apenas para diferenciar, o formato dos arquivos é o mesmo. Uma ou outra diretiva poderá ser adicionada no futuro, mas nada tão diferente como antes (de qualquer forma basta comentar as linhas ou removê-las, não é nada tão complicado).

O Mep Installer 3.x suporta os recursos atuais do Inno, incluindo uma excelente integração com o Windows 7 e Vista, instalações de 64-bit, e um grande destaque avançado: o Pascal Script. Ele permite “programar” dentro do instalador, adicionar telas personalizadas, coletar dados entrados pelo usuário em tempo de execução da instalação, chamar funções de DLLs, etc. Nas versões anteriores do Mep Installer eu tinha removido essa possibilidade pois não pretendia trabalhar com elas, e ficaria uma coisa a mais para mim ficar checando. Hoje decidi manter, os benefícios são enormes, e algumas pessoas só não usavam o Mep Installer pela falta de suporte ao Pascal Script.

Sendo um projeto pessoal, não posso garantir que o instalador esteja livre de erros. Farei o melhor possível, mas caso você não goste ou ele não satisfaça as suas necessidades, fique à vontade para usar o NSIS, o próprio Inno Setup ou outro gerador de programas de instalação de sua preferência. Antes de desistir, não deixe de consultar a ajuda do Inno Setup (pelo menos 5.6.3, para o Mep Installer 3.0), muita coisa que o instalador não oferece nativamente pode ser feita com o Pascal Script.

Enfim, usar o Inno Setup foi excelente porque o programa já estava bastante maduro, tem anos de estrada e eu não precisaria repetir todo o processo. Muitas software houses pequenas tentam, e no final acabam com criadores de instalação pagos fraquinhos, que não chegam aos pés do Inno. Para que cometer o mesmo erro, ainda mais fazendo tudo sozinho? Se é aberto é para ser usado e divulgado.

O Mep Installer 3 deve ser lançado oficialmente em 2010, mas já lancei um beta. Ainda tem muita cara de Inno Setup, mas logo vai ganhando personalidade. A principal coisa – o visual diferente – já está pronto.

Pretendo trabalhar mais no visual, tanto da interface de compilação (que tem cara de antiga no Inno) como no instalador – aliás, principalmente no instalador, inclusive penso em diferentes tipos de visuais. Um conceito que tenho para trabalhar é um instalador de uma única tela.

Para que fazer o usuário dar muitos cliques, sendo que com um só 99% dos programas estão bem servidos?! Como gosto de falar, a primeira experiência do usuário com o seu programa é durante a instalação, por isso investir em um instalador eficiente e fácil de usar é essencial. Não digo necessariamente investir dinheiro, mas sim tempo e vontade, por exemplo, estudando a ajuda de cada um deles – os dois maiores open source são o NSIS e o Inno Setup. Ou se for o caso baixando os fontes e recompilando (o NSIS é escrito em C++, o Inno Setup em Delphi).

Um outro visual trabalhado para o beta 2 será esse:

mpi

Mas dentro do possível o visual anterior continuará disponível, e quem sabe até um visual clássico do Inno Setup (mas isso já não vou prometer).

A versão 3.0 beta (inclusive o código fonte) e as anteriores podem ser baixadas em:

http://software.viamep.com/mepinstaller/

Versões “dev” nem tão testadas como o beta estou publicando aqui:

http://www.viamep.net/downloads/dev/

Lá já tem uma “pré” da beta 2, com essa tela exibida acima. Para usar esse visual adicione MepStyle=1 na seção [Setup]. Ao usar ela é bom definir a diretiva WizardImageFile com um caminho de uma imagem no tamanho de 697×353 pixels. Esse visual foca na “publicidade” do próprio programa, já durante a instalação, onde você pode apresentar recursos, foto de tela, divulgar seu site ou informar qualquer coisa que queira. Mais pra frente deverá ter uma imagem padrão no programa caso nenhuma seja definida, mas no estado em que está ele vai redimensionar a imagem “padrão” que fica na vertical, gerando um visual feio. Por isso, se quiser usar MepStyle=1, troque a imagem :)

Só uma coisa que peço e “repeço”, não me peça ajuda para mexer no código fonte :P Se vire, ele não é para iniciantes em Delphi. Eu não me considero avançado em Delphi, e não tive tantas dificuldades em ler (o código) e entender o projeto para começar a mexer, mas vai de cada um. Simplesmente não terei tempo para atender a pedidos de ajuda, prestar suporte sobre como fazer isso ou aquilo em programação. Note que não me refiro ao uso do programa em si, e sim ao código fonte.

comments powered by Disqus

Comentários arquivados

  1. escreveu

    O Mep Installer é um exelente programa para instalação! Eu gosto muito dele, dá para fazer os componentes que o usuário quer instalar. Muito bom mesmo, você está de parabêns Marcos. Mas eu sou da Empalamado Studios™, uma empresa brasileira que também desenvolve softwares, jogos e trabalha com computação gráfica. Quando usamos arquivos externos (dlls, imagens, sons, vídeos, INI, etc) na nossa engine, ela trabalha bem. Mas quando usamos o Mep Installer acho que ele não faz uma ligação, por que diz que estes arquivos estão faltando, daí quando olho mais afundo, percebo que está usando o diretório do ícone, ou seja, no desktop. O probrama é exelente, só que infelismente há este probleminha. Espero que resolva isso nas próximas versões, para poder-mos usá-lo “de cabeça”. Abraços.

  2. escreveu

    Opa, agradeço a mensagem e as considerações :)

    Acabei ficando sem tempo para atualizar o projeto, o que recomendo é usar as versões recentes do Inno Setup mesmo (no qual o Mep Installer era baseado).

    Sobre o que você falou, pelo que entendi é a pasta de trabalho que vai no atalho, né?

    Você pode tentar adicionar isso:
    “WorkingDir: {app}”
    na linha que cria os atalhos, da seção [Icons].

    Assim a pasta de trabalho do atalho será essa, não a pasta onde estiver o atalho.

    Se possível, seria bom – mais garantido – que seus programas checassem a pasta onde estariam as dlls e arquivos que chamam pelo nome, chamando as mesmas com o caminho completo. Em boa parte das IDEs de desenvolvimento e linguagens dá para capturar a pasta do .exe, usando ela como base para tudo.

    Segue trecho da FAQ do Inno Setup. Abraços!

    http://www.jrsoftware.org/isfaq.php

    My application can’t find any of its files when it is started from the shortcut created by Setup. It works fine when I double-click the application’s EXE in Explorer.

    Your application is most likely not specifying pathnames on the files it is trying to open, so it is expecting to find them in the current directory. Inno Setup by default does not set the “Start In” field on shortcuts its creates; this causes Windows to pick a directory itself, which usually won’t be the directory containing your application.

    In virtually all cases, this is something that should be corrected at the application level. Properly designed GUI applications should not expect to be started from a particular directory; they should always specify full pathnames on files they open. In Delphi or C++Builder, for example, it’s possible to get the full pathname of the directory containing the application EXE by calling: ExtractFilePath(ParamStr(0)). To get the full path of a file named “File.txt” in the application directory, use: ExtractFilePath(ParamStr(0)) + ‘File.txt’.

    If for some reason you cannot fix this at the application level, you can tell Inno Setup to set the “Start In” field by adding “WorkingDir: {app}” to your [Icons] entries.