Compactar DLLs

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Compactar DLLs

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Compactar DLLs

Mensagem 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.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Compactar DLLs

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Compactar DLLs

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Compactar DLLs

Mensagem 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:

Código: Selecionar todos

hb_MemoWrit( JPEGAnoNovo() )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Compactar DLLs

Mensagem 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"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Compactar DLLs

Mensagem por JoséQuintas »

Faço tudo pelo editor de texto, e o Harbour faz o resto.
usorc.png
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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Compactar DLLs

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Compactar DLLs

Mensagem por Kapiaba »

Mister Quintas, um editor de recursos, faz isso, mas que eu saiba, é somente para programas FOR WINDOWS:
recursofwh.png
Neste caso, isto é uma DIALOG(Form) criada em Workshop.exe by Borland,

Abs.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Compactar DLLs

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Compactar DLLs

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Compactar DLLs

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder