Página 1 de 1
Compactar DLLs
Enviado: 11 Set 2016 17:20
por JoséQuintas
Será que compensa compactar DLLs?
Do jeito que estão as máquinas hoje em dia, parece até exagero, mas
De 733kb pra 122kb, dá vontade de compactar.
Código: Selecionar todos
d:\CDROM\FONTES\INTEGRA>upx -d rmchart.dll
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2013
UPX 3.91w Markus Oberhumer, Laszlo Molnar & John Reiser Sep 30th 2013
File size Ratio Format Name
-------------------- ------ ----------- -----------
733184 <- 122368 16.69% win32/pe rmchart.dll
Unpacked 1 file.
Compactar DLLs
Enviado: 12 Set 2016 15:31
por Kapiaba
Compactar para que? Hoje em dia, em Programação for windows, não se usa mais DLL´s(Dinamyc Load Library) e sim incorpora-se os ARQUIVOS.RC ou ARQUIVOS.RES e compacta-se o *.EXE ao final da compilação, sem contar, que ninguém poderá abrir o seu .EXE e extrair os RECURSOS.
Abs.
Compactar DLLs
Enviado: 12 Set 2016 22:52
por lucimauro
Kapiaba como faz para incorporar as dll num arquivo .res e depois compilar normalmente com harbour 3.2?
você teria alguma dica ai pra nos ajudar.
Desde já obrigado.
Compactar DLLs
Enviado: 13 Set 2016 10:02
por Kapiaba
Bom dia, primeiro esclarecer, que estou falando de programas FOR WINDOWS.
Para transformar uma DLL em .RC ou .RES, você precisa de um editor de RECURSOS, tipo: WORKSHOP.EXE ou PELLESC.EXE, a parte de incorporar ao seu executável, é muito simples. Basta mandar o script de compilação incorporar e internamente, você chama os RECURSOS, desde que você use uma biblioteca visual, que permita o uso de RECURSOS, que é o caso do Fivewin que permite escrever via código(@) ou usar diretamente recursos criados através dos editores de recursos.
Exemplo, Pellesc.exe,
http://www.smorgasbordet.com/pellesc/
Eu prefiro o WorkShop.exe da Borland, mas ele não funciona em 64 bits. abs.
Compactar DLLs
Enviado: 13 Set 2016 12:01
por JoséQuintas
Dependendo da situação, prefiro o uso universal:
Código: Selecionar todos
FUNCTION JPEGBancoItau()
#pragma __binarystreaminclude "image\banco341.jpg" | RETURN %s
FUNCTION JPEGBancoBradesco()
#pragma __binarystreaminclude "image\banco237.jpg" | RETURN %s
FUNCTION JPEGNatal()
#pragma __binarystreaminclude "image\natal.jpg" | RETURN %s
FUNCTION JPEGAnoNovo()
#pragma __binarystreaminclude "image\anonovo.jpg" | RETURN %s
Mas precisa verificar o uso de recursos, quanto a resource e quanto à compactação.
Parece que isso tem os prós e contras.
Depois é só, por exemplo:
Compactar DLLs
Enviado: 13 Set 2016 12:03
por JoséQuintas
E também uso no arquivo jpa.rc, um trecho dele:
Código: Selecionar todos
AppIcon ICON "image\\jpa.ico"
cmdAgenda ICON "image\\cmdAgenda.ico"
cmdAltera ICON "image\\cmdAltera.ico"
cmdAnterior ICON "image\\cmdAnterior.ico"
cmdBaixa ICON "image\\cmdBaixa.ico"
cmdBarCode ICON "image\\cmdBarCode.ico"
Compactar DLLs
Enviado: 13 Set 2016 12:12
por JoséQuintas
Faço tudo pelo editor de texto, e o Harbour faz o resto.
Por acaso usando um editor de recursos, e colocando a DLL em resource, ela fica disponível pra uso? ou precisa extrair do EXE?
Qual a vantagem de usar esse tal editor de recursos?
Compactar DLLs
Enviado: 13 Set 2016 12:18
por Kapiaba
Mister José Quintas, neste caso, o senhor somente disse ao arquivo.rc, onde estão os recursos(imagens) em um diretório, eu uso tudo, dentro dos meus arquivos.res, e invoco de dentro do módulo via comandos.
Código: Selecionar todos
AppIcon ICON "image\\jpa.ico"
cmdAgenda ICON "image\\cmdAgenda.ico"
cmdAltera ICON "image\\cmdAltera.ico"
cmdAnterior ICON "image\\cmdAnterior.ico"
cmdBaixa ICON "image\\cmdBaixa.ico"
cmdBarCode ICON "image\\cmdBarCode.ico"
Assim eu uso:
Neste caso, nada fica em pasta(diretório). E o meu compactador de .exe, não permite, que nenhum editor de recursos, copie ou cole os recursos internos do programa .exe.
Código: Selecionar todos
02/10/2009 11:40 780 CADCLIEN.RES
13/09/2016 11:59 39.916 EMAIL.RES
24/02/2015 15:27 32 EMAIL2.RES
23/06/2015 09:48 3.648 EMAILADI.RES
29/02/2016 15:34 729.316 IMAGENS.RES
28/06/2012 10:18 1.040.532 IMAGENS2.RES
11/08/2016 15:34 564.304 IMAGENS3.RES
07/07/2014 15:43 1.033.444 IMAGENS4.RES
29/02/2016 15:34 858.128 IMAGENS5.RES
29/02/2016 16:30 783.024 IMAGENS6.RES
29/06/2016 15:11 998.892 IMAGENS7.RES
08/09/2016 12:12 136.976 NFE.RES
12/01/2016 09:38 117.880 NFEIND.RES
30/08/2016 11:19 768.712 NFEOU.RES
03/07/2014 12:53 869.388 NFEP.RES
21/06/2016 16:44 5.196 NFEZTIP3.RES
24/07/2006 15:01 736 RELATOR.RES
16/08/2006 10:42 9.164 RELSCC.res
15/07/2006 11:25 282.412 VPREVIEW.RES
16/06/2006 17:36 35.536 WSENHA.RES
22/07/2013 12:09 772.748 XOPLOOK.RES
13/09/2016 11:59 760 XPLOOK.RES
Abs.
Compactar DLLs
Enviado: 13 Set 2016 12:26
por Kapiaba
Mister Quintas, um editor de recursos, faz isso, mas que eu saiba, é somente para programas FOR WINDOWS:
Neste caso, isto é uma DIALOG(Form) criada em Workshop.exe by Borland,
Abs.
Compactar DLLs
Enviado: 13 Set 2016 12:35
por JoséQuintas
Só uma observação:
Como fica visível no uso universal, resource consome memória.
Convém avaliar se vale a pena o desperdício de memória.
Sendo assim, seria mais interessante incorporar rmchart.dll compactado do que sem compactar, se é que seria interessante incorporar no EXE.
Do jeito que eu uso, o resultado final é um único EXE.
Na máquina de desenvolvimento, assim como acontece com os fontes, são vários arquivos.
Provavelmente você desenhe telas nesse resource editor.
Quanto a proteger os arquivos em resource.... copiei os ícones da internet, estão disponíveis pra todos.
Proteger pra que? Basta que estejam dentro do EXE.
Se por acaso embutir a dll do rmchart dentro do EXE, mesma coisa, tá disponível pra todo mundo, proteger pra que?
Compactar DLLs
Enviado: 13 Set 2016 12:47
por Kapiaba
Como fica visível no uso universal, resource consome memória.
Mister Quintas, o senhor não deixa de ter razão, mas sempre que se abre um recurso, tem comando para fechar o mesmo. Assim, o consumo é só no local, pois não se "carrega" todos os recursos ao mesmo tempo, somente o recurso que se vai usar no módulo chamado.
Mas o senhor tem razão... Ex.: Se uma BITMAP for muito grande, deve-se ajustá-la ao compilador xharbour, o mesmo, nas versões atuais, "avisa" que o recurso(bitmap) está fora dos padrões... Mas ou menos por ai... Questão de ir se acostumando com a ferramenta que se usa e o compilador. O senhor é genial, gosto do seu jeito de explanar as coisas, sem ser agressivo. Abs.
Compactar DLLs
Enviado: 13 Set 2016 14:11
por JoséQuintas
mas sempre que se abre um recurso, tem comando para fechar o mesmo
Não exatamente.
Se o EXE é carregado pra memória, ele vai com resource e tudo.
Considerando que não deve existir nenhuma máquina com menos de 1GB de memória, alguns MB não vão fazer muita diferença.
Mas a gente nunca sabe o que a Microsoft pode inventar.
Não sei, por exemplo, se o antivírus pode querer fazer testes adicionais em resource, ou considerar que um EXE salvo pelo aplicativo é perigoso.
E se precisar assinatura digital, o que estiver em resource, EXE ou DLL, pode acabar precisando também, porque depois vai se tornar independente do EXE.
Mas é cada um testar seu uso, e ver o que dá, sempre existe novidade e/ou forma diferente de uso pra descobrir.
Nota: Aquele resource universal deve valer pra Linux também, foi o Viktor quem me mostrou essa forma de uso.