Prezados,
Bem com nova versão do Delphi o
XE2 estou vendo muita gente migrar para ele. É realmente uma versão
surpreendente. É fantástica. Muito vêem do 2007, ate do Delphi 7. Bem, mas nem
como tudo são flores, acontece que você migrou para o Delphi XE2 compilou seu
projeto e poxa vida... Como o executável ficou grande. =/ Bem vamos dar uma
solução para isso, se é que você já não conheça.
UPX para compactar
seu executável
Apresento a vocês o UPX. Ele vai
comprimir seu executável como um ZIP, mas não perder as características de ser
um executável, e ainda consegue dar
alguma proteção para engenharia reversa. O contra é que ele ainda não funciona
para compilações com 64 bits.
Baixando o UPX
Para baixar acesse o link: http://cyax.com.br/calor-pode-sim-gravar-dados-em-hds/1884
Se você estiver utilizando o Windows. Caso seu sistema
operacional seja Linux vá ate o site: http://upx.sourceforge.net/
e baixe a versão mais adequada.
Instalando o UPX
Para instalar basta você descompactar o arquivo em uma pasta
de sua preferência. E observar a existência de um arquivo UPX.exe
É este arquivo que vamos executar com alguns parâmetros para
reduzir nosso executável.
Executando
Eu normalmente crio um arquivo “UPX.txt” com o seguinte
"C:\Nelson\ProjetoTeste\Win32\Debug\upx308w\upx.exe"
-9 Project1.exe
Em seguida mudo o nome para “UPX .bat”
Bem você pode observar que o UPX
aceita mais parâmetros, -9 indica maior
compressão já -1 indica mais velocidade e menos compressão. Assim por diante,
há outras opções como visto na tela a seguir:
Conclusão
No meu aplicativo exemplo houve uma redução considerável, a
casos que isso não acontece, alem disso você pode testar outros parâmetros para
ver se obtêm melhores resultados. Para os curiosos de plantão meu arquivo tinha
quase 12 MB ficou com 3,3MB. E a razão
por o Delphi ter arquivos tão grandes agora???? Boa parte se deve ao fato dele
implementar compatibilidade com o Unicode.
Espero que tenha sido útil. Ate a próxima valeu. Duvidas, criticas, sugestões e correções vide comentários. =)
Espero que tenha sido útil. Ate a próxima valeu. Duvidas, criticas, sugestões e correções vide comentários. =)
Legal Nelson .. vou experimentar ...
ResponderExcluirTenho que testar se não interfere no HardLock ...
Vlw
Abçs
João Carlos
Blz João Carlos, teste mesmo, e coloque aqui os resultados se deu certo ou não. Não esqueça de fazer o bakcup =)
ExcluirAbraços
Utilizo-o ha anos mas tem limitações o seu artigo. Existem muitas maneiras de se diminuir o tamanho de um executável feito no Delphi e sinceramente, não era esta a fórmula maior que busco.
ResponderExcluirass: Dataprime
Sem dúvidas existem muitas maneiras, essa é uma maneira simples e fácil de implementar. Podemos sugerir outras maneira, quais os seus requisitos???
ExcluirPara maior compressão, utilizo os seguintes parâmetros:
ResponderExcluirupx --best --lzma [arquivo]
Só vamos deixar claro que isso só diminui o espaço em disco usado e a transmissão na rede do .EXE, porém o consumo de memória RAM necessário para rodar é o mesmo ou até maior.
ResponderExcluirDiminui o espaço físico no disco, o que ajuda a carregar na memoria RAM mais rapidamente. Porem demora um pouco mais para executar pois ao carregar ele vai descompactar.
ExcluirPara diminuir drasticamente o tamanho do executável usando o XE2, o melhor é proceder da seguinte forma:
ResponderExcluirProject > Modify Skin Options. Desabilita o "Enable skin suport", pois por padrão vem habilitado essa opção, e com isso carrega todas as skins em todos os forms que são adicionados ao projeto.
Grande Lincoln, eu acredito que essa opção é quando se usa o DevExpress...não? Na realidade essa engorda do Delphi ocorreu pela por vários motivos mas o principal é a implementação nativa do UNICODE que transforma todo char em 2 bytes. Como Delphi por conceito trata toda string como um novo endereço de moria ele acaba consumindo muito espaço. Algumas linguagens e IDE implementam uma lista de Strings onde vc coloca todas as string da lista e vai so indexando para onde quer usar. É uma saída mas não sei se os programadores Delphi se acostumarão com essa ideia. Se eu estiver enganado por favor me corrijam. Esse blog é pra isso mesmo, troca de informações dicas e aprendizagem continua.
ResponderExcluir