“Deployment” em Windows com Py2Exe e NSIS

Deployment segundo a wikipedia:

Software deployment é toda atividade que torna um sistema de software disponível para uso.

Como o TagMap é feito em Python+GTK, e pelo que vi o público interessado é composto majoritariamente de usuários de windows, pedir que eles instalem Python, GTK+ e PyGTK pra só então chegar em meu humilde programa, certamente seria uma barreira. Claro que tem o excelente All-in-one PyGTK for windows installer, mas se dá pra facilitar por quê não?

As duas ferramentas necessárias são o Py2Exe, responsável por tornar o script um legítimo executável, e o NSIS, que serve para criar instaladores next-next-finish e que vai fazer todo mundo te olhar como gente grande. ;P

Py2Eexe

O Py2Exe cria o executável a partir de um arquivo de configuração, no caso do TagMap foi o setup_win32.py. Observando o arquivo você verá que não é muito complicado, só substituir alguns valores e pronto; claro que mudanças maiores vão exigir algum estudo, mas se o seu projeto for em PyGTK com Glade pode pegar o meu e apenas trocar os valores (como eu mesmo fiz😉 ).

No prompt do DOS (ugh!) e no diretório do programa execute:

python setup_win32.py py2exe

Depois de algum trabalho por parte do script será gerado um diretório dist contendo (no meu caso) tagmap.exe, alguns DLLs e outros arquivos. Para executar em qualquer computador basta instalar antes GTK, mas ele também pode ser embutido.

Uma bom código para observar e aprender (e copiar) é o do GAJIM.

NSIS

Com o MakeNSIS que vem com o Nullsoft Scriptable Install System você pode ler um script que descreve o roteiro das perguntas feitas pelo instalador next-next-finish. Claro que ninguém vai ler só apertar o botão insistentemente até chegar no final. Meus scripts são o installer.nsi e installer_gtk.nsi, ambos podem ser facilmente adaptados para outros projetos. Como o nome deve indicar, o segundo script cria um instalador que coloca o GTK junto com o programa, pode parecer um desperdício de espaço, mas com as conexões rápidas e os HDs grandes de hoje em dia esse é um problema muito menor que mandar o usuário baixar um monte de dependências manualmente.

Bem, não tem muito mais o que explicar, até porque ainda estou aprendendo, mas um tutorial completo e direto pode ser encontrado em PyGTK and Py2Exe HowTo.

E os instaladores do TagMap (numa versão muito alfafa) pra windows, com e sem GTK:

P.S.: Um agradecimento especial pra minha gatinha que pacientemente me ajudou a testar. :*

10 pensamentos sobre ““Deployment” em Windows com Py2Exe e NSIS

  1. estou com um problema e gostaria que me ajudasse.Instalei o NSIS,acontece que não estou sabendo usá-lo,ou seja, configurá-lo,poderia me mandar via E-mail os passos necessários para conf.este programa?desde já agradeço.

  2. Oi Janio,
    a única vez que usei o NSIS foi essa e tudo que fiz foi pegar um arquivo .nsi e alterá-lo baseado nos comentários no próprio arquivo. Você pode dar uma olhada no meu http://tagmap.googlecode.com/svn/trunk/installer.nsi, que pode ser adaptado pro seu projeto. Lembrando que usando o MakeNSIS para abrir sua versão do installer.nsi já dará início ao processo de criação do instalador.
    Pra ajudar tem a entrada na wikipedia com algum código de exemplo [http://pt.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System] e o tutorial [http://nsis.sourceforge.net/Docs/Chapter2.html].
    Não posso ajudar muito mais do que isso por ter usado pouco, mas se você esbarrar em alguma dúvida no processo pode falar.

  3. Se você não quiser instalar o GTK à parte, basta copiar alguns arquivos do seu GTK e adicionar no processo de instalação. Simplifica um pouco. Os diretórios etc, lib e share (locales) são suficientes. Abaixo um script que fiz para copiar o necessário (note que só coloquei algumas localizações). O script assume que o diretório “files” é onde estarão os arquivos para instalar. o py2exe irá gerar meus arquivos dentro deste diretório também. Você deverá ver algo como:

    files/
    files/etc
    files/lib
    files/share

    É claro que você deve considerar os problemas de licença envolvidos.


    @echo off

    set GTKDIR=C:\Program Files\GTK

    if not exist files mkdir files

    if exist files\etc goto gtkcopied

    xcopy /E /Y /I "%GTKDIR%\etc" .\files\etc
    xcopy /E /Y /I "%GTKDIR%\lib" .\files\lib
    xcopy /E /Y /I "%GTKDIR%\share" .\files\share

    rem useless directories

    rmdir /S/Q files\share\gtk-doc
    rmdir /S/Q files\share\doc
    rmdir /S/Q files\share\gtk-2.0

    rem put only common locales

    rmdir /S/Q files\share\locale
    mkdir files\share\locale

    xcopy /E /Y /I "%GTKDIR%\share\locale\pt_BR" .\files\share\locale\pt_BR
    xcopy /E /Y /I "%GTKDIR%\share\locale\pt" .\files\share\locale\pt
    xcopy /E /Y /I "%GTKDIR%\share\locale\de" .\files\share\locale\de
    xcopy /E /Y /I "%GTKDIR%\share\locale\fr" .\files\share\locale\fr
    xcopy /E /Y /I "%GTKDIR%\share\locale\en_GB" .\files\share\locale\en_GB

    :gtkcopied

    del files\*.*

    cd .\src
    c:\python24\python setup.py py2exe
    pause

    Depois, usando o inno setup, inclui estes arquivos do GTK:

    [Files]
    Source: “files\*”; DestDir: “{app}\”; Flags: ignoreversion recursesubdirs createallsubdirs

  4. Pingback: Editor de pistas do Tampycross no Windows « Vale do Trovão

  5. Pingback: criando um .exe com Python + GTK « ldev

  6. OI… tentei gerar i intaller para o seu arquivo installer.nsi

    mas no momento de executar o programa nsi ele gerou erros

    Error in macro MUI_PAGE_LICENSE on macroline 21
    Error in script “C:\Documents and Settings\talita\installer.nsi” on line 28 — aborting creation process

    como posso consertar isso..

    Abracos

    Talita

  7. Oi Talita,
    cara, infelizmente não mexo com o NSI faz um tempão e estou sem máquina com Windows pra testar.
    Daqui dessa distância mental não me ocorre o que pode ter sido, mas sugiro você testar o script mais simples possível com o projeto mais simples possível pra ver se o erro fica mais evidente.

    Abraços

  8. Olha só, esse script pro NSIS>>

    ;——————————–

    ; The name of the installer
    Name “Installer”

    ; The file to write
    OutFile “setup.exe”

    ; The default installation directory
    InstallDir $PROGRAMFILES\nome da pasta
    Icon “C:\*LOCAL*\icon.ico”

    ; Request application privileges for Windows Vista
    RequestExecutionLevel user

    ;——————————–

    ; Pages

    Page instfiles

    ;——————————–

    Section “Instalar”

    SetOutPath $INSTDIR

    File “arquive.***”

    SectionEnd

    Caso queiram adicionar mais arquivos é so fazer nova linha com file e o nome.

    esse é um bem simples, só com a página de instalação. Se quiserem entender melhor é so abrir o arquivo “NSIS.chm” q tem esplicação de todas as funções e variaveis.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s