Essa é a terceira parte da série de Posts Distribuir Programas em Python para Desktops Windows. Nela você vai aprender como criar um instalador MSI utilizando o Inno Setup e colocando as DLLs do MSVCR para o Python funcionar em qualquer máquina windows.
As outras duas partes são:
- Como criar um executável com Instalador MSI com Python e Cx_freeze
- Como criar um programa com Auto-Update utilizando Python e Esky
Bom, nós vimos como criar um instalador MSI com o cx_freeze e utilizando as DLL’s de MSVCR da própria página no primeiro post, depois vimos como modificar o programa para ele ter um Auto-Update. Só que quando alteramos o setup.py pra gerar o programa com o Auto-Update não conseguimos mais fazer um instalador com o cx_freeze. Isso acontece porque o Esky modifica o seu programa, ele cria um executável que verifica se há algum download disponível no FTP, se tiver ele faz o download, faz o update, verifica se deu certo e exclui as bibliotecas antigas.
Primeira coisa: baixar e instalar o Inno Setup.
O Inno Setup cria um arquivo .iss que nada mais é que um script para criar o seu instalador. Abrindo o Inno você tem a opção de escrever esse script diretamente ou usar o Script Wizard (Um assistente):
Nós vamos criar um instalador usando o assistente, primeiro nós vamos utilizar aquele arquivo que geramos no post anterior, o boneca-1.0.1.win32.zip. Você precisa ter descompactado esse arquivo:
No Inno Setup clique em File >> New. Você abrirá o Assistente, ele é fácil de usar, preencha esses dados como quiser:
Na próxima tela você pode escolher onde o Instalador vai colocar o seu programa. O Default é o Program Files folder, mas tem um porém: Se o seu código não tiver Assinatura Digital (Code Signing) você vai ter dificuldades com o UAC do Windows, porque ele não vai conferir a autenticidade do seu código e isso implicará em problemas com antivírus, em bloqueio do programa pelo windows e principalmente ele pode impedir que o programa faça o auto-update, por isso use uma outra pasta a princípio. Você pode escrever um caminho ou usar uma Constante das pastas do Windows do próprio Inno Setup. [Recomendável]
Na terceira tela você vai colocar quais os programas, pastas e arquivos serão instalados pelo instalador, no caso o boneca.exe e o python27.dll ficaram na raiz e também a pasta boneca-1.0.1.win32 com o conteúdo dela.
Então coloque boneca.exe no campo de Application main executable file
Em seguida, clique em Add File para colocar o python27.dll e depois em Add Folder para adicionar a pasta boneca-1.0.1.win32:
Agora é só seguir em diante no assistente, no final ele vai criar o arquivo .iss. Você já pode compilar o arquivo e ele vai gerar o instalador .msi mas está faltando agora adicionar as DLLs do MSVCR. Então baixe de acordo com a sua versão do python:
- Python 2.4 ou Python 2.5 – Microsoft Visual C++ 2005 Redistributable Package
- Python 2.6, 2.7 ou 3.x – Microsoft Visual C++ 2008 Redistributable Package
Agora você precisa modificar o código do seu arquivo .iss pra ele instalar as DLLs junto com o seu programa. Isso aqui eu usei essa solução que achei no StackOverFlow e ela funciona muito bem:
Na seção Files coloque o caminho do vc_redist que você baixou:
1 2 |
|
No final da seção Run adicione esse código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
|
Agora salve e compile seu arquivo. Você terá um arquivo setup.exe como saída na pasta Output (ou o nome que você colocou) e ele vai instalar o seu programa da boneca com as DLLs necessárias pra rodar em qualquer Windows.
Conclusão:
Se você acompanhou os 3 posts você conseguiu criar um programa em python com auto-update e distribuí-lo para qualquer computador windows.
Observações Final sobre Code Signing:
Fiz uma pesquisa sobre code signing no ano passado(2014) , pode ser interessante para alguém:
Autoridade Certificadora | Link | Preço / ano |
Global Sign | https://www.globalsign.com/code-signing/ | 229 usd |
Thawte | http://www.thawte.com/code-signing/index.html?tid=a_box_buycs | 299 usd |
Symantec Verisign | http://www.symantec.com/code-signing | 499 usd |
Godaddy Code Signing | http://br.godaddy.com/ssl/code-signing-certificate.aspx | 479,99 reais / 199.99 usd |
Ksoftware (Comodo partner) | http://codesigning.ksoftware.net/ | 95 usd |
Digicert | http://www.digicert.com/code-signing/ev-code-signing-compared.htm | 223 usd |
Obs: | ||
Comparativo interessante: | https://www.sslshopper.com/cheap-code-signing-certificates.html |
Deixa eu te perguntar, e se eu quiser rodar meu programa como serviço do windows para ser executado toda vez que eu ligue a maquina, porem ja queria deixar configurado no instalador, seria possivel?
gostaria de saber como adiciono um ícone personalizado nos .exe de Python 3,é possível?