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:

Código: Selecionar todos

hb_MemoWrit( JPEGAnoNovo() )

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.
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?

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:
recursofwh.png
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.