“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:
- tagmap_installer_gtk.exe (11,6Mb)
- tagmap_installer.exe (6,88Mb)
P.S.: Um agradecimento especial pra minha gatinha que pacientemente me ajudou a testar. :*






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.
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.
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
Marcelo, boa essa, não sou muito bom em scriptagem no DOS e isso pode me ser bem util. Valeu.
Ah, e teu filhinho é bunitão. Parabéns!
Muito útil o seu post sobre PyGTK no Windows, muito obrigado! Acabou que no meu caso não funcionou, por causa desse bug no py2exe:
https://sourceforge.net/tracker/?func=detail&atid=115583&aid=1665413&group_id=15583
Fazer o quê…
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
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
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.