Instalador do Infra

30 views
Skip to first unread message

Marcos George

unread,
Jan 20, 2009, 7:13:56 AM1/20/09
to infra...@googlegroups.com
Por falar em instalador, alguém tem notícias? Como está o andamento do projeto do Instalador? Tem alguem empenhado nisso? Se estiver com dificuldades, há algo que possamos fazer para ajudar?

Att
Marcos George





O jeito mais fácil de manter a sua lista de amigos sempre em ordem! Organize seus contatos!

Daniel Bastos

unread,
Jan 22, 2009, 12:56:51 PM1/22/09
to infra...@googlegroups.com
Desculpe ter sumido. Estava sem internet em casa, e aqui na empresa ese início de ano as coisas estão pegando fogo :( Mal da tando tempo pra poder fazer as coisas, ai ficou difícil de passar as coisas pro pessoal da lista.

Deixa eu passar um resumo do que eu ví pra galera.

Compilar o infra por linha de comando foi extremamente simples. Mais complicado está sendo recuperar e exibir o resultado da compilação para o usuário. Já sei. A JVCL tem componentes pra isso, mas o lance é evitar dependências com outras bibliotecas o quanto for possível. Então deixei isso pra pesquisar mais tarde.

Os intaladores tanto da JCL quanto da JVCL tem muitas coisa já prontas que poderiam ser aproveitadas na integra ou parcialmente

1º Vamos ao dcc32:
Partindo somente da compilação do InfraCore, o comando que eu usei para compilar foi o seguinte:
dcc32 -N"C:\Programação\Componentes D7\Infra\Packages\D7\Build" -B -E"C:\Programaçao\Componentes D7\Infra\Packages\D7\Build" -W -H infracore.dpk

Opções usadas
-N = Define o diretório onde serão geradas os arquivos .dcu.
-B = Build All.
-E = Devine o diretório onde serão geradas os arquivos .exe, no caso de uma aplicação ou os .bpl, no caso de pacotes.
-W = Exibe os warnings.
-H = Exibe os hints.

Um problema encontrado foi a questão do path, que o dcc32 só aceita paths absolutos. Tentando seguir a dica do Fabrício Colombo numa mensagem anterior, descobri que a chave de registro não existe por padrão. Ele é criado quando vc cria uma variável de ambiênte local pela IDE do delphi. No final das contas, não consegui usa-la com o dcc32, por isso continuei usando os caminhos absolutos(Quem souber como usa-la, agradeço muito).

Outro problema encontrado foi a questão do parâmetro -E. Apesar de estar setado corretamente, ele não gerou a .bpl no lugar indicado. Não sei pq ignorou a definição em favor das configurações do projeto neste caso e não ignorou a opção -N. Em projetos de teste que eu fiz onde não tem a indicação de onde será gerado o binário, ele funcionou bem.

Uma coisa interessânte é que: Com o Delphi 2007, o qual utilizo na empresa, é possível, na hora da compilação, exibir a linha de comando que foi usada para compilar seu projeto. Por elas, ví que as variáveis de ambiêntes que estão sendo usadas na minha library, são substituidas pelo caminho absoluto. Por isso, até o momento não vejo uma opção alem de montar as strings com o caminho durante a o instalador.

2º O projeto do instalador do Jedi.
No projeto do instalador da JVCL, eu não consegui achar a resposta pra questão anterior, mas achei muita coisa legal, como, por exemplo, verificação das versões do delphi.
O projeto dos caras ta bem organizado, e eles evitaram a dependência até mesmo com a jcl/jvcl. Muitas coisas ali eles fazem, mas já existe pronto na JCL/JVCL tb.

3º Uso do want.
Pra mim o projeto tinha sido abandonado. Pois o último binário que tinha no sourceforge que eu conhecia (até checar hoje), era a versão 0.3.0 de maio de 2004 (Bem antigo, diga-se de passágem).
Mas ví hoje que tem um novo binário do final de 2008. Não sei quais foram as mudanças, mas acho que vale a pena dar uma olhada.

Na pasta "jvcl\install\release" tem o want e o xml de configuração dele. Não sei se os caras ainda estão usando, mas já vale de referência pra dar uma olhada :). Neste xml, uma coisa que me chamou a atenção é que eu estou tomando por base a JVCL 333, enquanto o want.xml está configurado como 331. Não sei se eles simplesmente não atualizaram o número da versão no arquivo de configuração, ou não utilizam mais o want, só não retiraram ele do projeto ainda.

Do delphi 2007 pra cima, parece que ele já gera as configurações para se usar o MS build como gerenciador de build. Sinceramente, nunca consegui entender como ele funciona. Já tinha tentando entender antes mesmo do want, a um tempo atraz.

Bom, por hora é isso .. agradeço quem puder me ajudar nas questões que ficaram pendentes.

2009/1/20 Marcos George <mgnd...@msn.com>



--
Abs
Daniel A. Bastos

vitor rubio

unread,
Jan 23, 2009, 1:55:43 PM1/23/09
to infra...@googlegroups.com
Com relação à montagem dos pacotes zipados, depois do processo de build. 

Comecei hoje a fazer um programinha (bem tosco, não usa POO, nem nada) que pudesse ser "chamado" depois do build, talvez pelo proprio script do want, para gerar os pacotes.zip.

Me sugeriram usar zlib, mas fiz uns testes aqui  e conclui:


1) Nativamente a zlib só comprime arquivos. Para comprimir um diretorio inteiro precisaria de muito codigo ou muitas units de terceiros (contribuidas) para usar junto com a zlib.

2) A taxa de compressão da zlib não foi muito boa nos meus testes. A compressão com formato zip foi um pouco maior e a compressão com 7z foi maior ainda, gerando o menor arquivo.



E aí, como vamos proceder? 

Lembrando que embora zipmaster e 7zip sejam de terceiros, são totalmente open-source. E a biblioteca zlib que vem junto com o Delphi também é de terceiros, pois foi desenvolvida por terceiros, como podem ver em http://www.zlib.net/
e a unit zlib.pas do delphi 7 é apenas um wrapper para essa biblioteca, e já está meio desatualizada.


2009/1/22 Daniel Bastos <danb...@gmail.com>



--
Vitor
       Luiz
               Rubio ^^

vitor rubio

unread,
Jan 23, 2009, 2:25:12 PM1/23/09
to infra...@googlegroups.com
Outra coisa, a zlib, como eu disse, não é compativel com zip, para ser compactivel você tem que dar uma boa "Rebolada" incrementando com uns códigos a mais, nem sei se da certo. E não deveria ser dificil para quem baixar o pacote da net para descompactar.

Todo mundo cohece o turbo power lock box?   Pois bem, do mesmo time tem tambem o abbrevia, que é outro open-source compactivel com zip.

2009/1/23 vitor rubio <vitor...@gmail.com>

Silvio Clécio

unread,
Jan 23, 2009, 5:05:51 PM1/23/09
to infra...@googlegroups.com
Olá Amigos,

Quer ver compressão? Coloca o 7z com nível de compressão "Ultra" e no método "LZMA", cara, em determinados arquivos o pacote fica bem menor que um compactado com o WinRAR em máxima compressão.

Se eu não me engano o 7z aceita parâmetros, tanto o setup (para instalar em modo SILENT) quanto o próprio binário dele, acho que tem até um demo na NET mostrando como compactar arquivos com Delphi/7z.

Mas, ainda não deixo de lembrar que o InnoSetup gera setups de instalação para componentes Delphi, o pacote IBObjects mesmo é feito com o InnoSetup, pode olhar nas propriedades do setup, e o mesmo detecta a(s) versão(-ões) do(s) Delphi('s) e instala nele(s).

O Inno é open source e tb usa o método LZMA.

2009/1/23 vitor rubio <vitor...@gmail.com>

Com relação à montagem dos pacotes zipados, depois do processo de build. 

Comecei hoje a fazer um programinha (bem tosco, não usa POO, nem nada) que pudesse ser "chamado" depois do build, talvez pelo proprio script do want, para gerar os pacotes.zip.

Me sugeriram usar zlib, mas fiz uns testes aqui  e conclui:


1) Nativamente a zlib só comprime arquivos. Para comprimir um diretorio inteiro precisaria de muito codigo ou muitas units de terceiros (contribuidas) para usar junto com a zlib.

2) A taxa de compressão da zlib não foi muito boa nos meus testes. A compressão com formato zip foi um pouco maior e a compressão com 7z foi maior ainda, gerando o menor arquivo.



E aí, como vamos proceder? 

Lembrando que embora zipmaster e 7zip sejam de terceiros, são totalmente open-source. E a biblioteca zlib que vem junto com o Delphi também é de terceiros, pois foi desenvolvida por terceiros, como podem ver em http://www.zlib.net/
e a unit zlib.pas do delphi 7 é apenas um wrapper para essa biblioteca, e já está meio desatualizada.
--
[]'s, Silvio Clécio
---
Linux User: #481900
Skype: silvioprog
ICQ: 432519902
E-mail, Y! Messenger: silvi...@yahoo.com.br
Gmail, GTalk: silvi...@gmail.com
Hotmail, MSN: silvi...@hotmail.com
BlogSpot: http://silvioclecio.blogspot.com/
BlogSite: http://silvioprog.blogspot.com/
°oO| Seja livre, use Linux! |Oo°

Fabricio Colombo

unread,
Jan 23, 2009, 8:23:09 PM1/23/09
to infra...@googlegroups.com
Olá Daniel,
 
após o seu post deu uma fuçada aqui...
 


 
Um problema encontrado foi a questão do path, que o dcc32 só aceita paths absolutos. Tentando seguir a dica do Fabrício Colombo numa mensagem anterior, descobri que a chave de registro não existe por padrão. Ele é criado quando vc cria uma variável de ambiênte local pela IDE do delphi. No final das contas, não consegui usa-la com o dcc32, por isso continuei usando os caminhos absolutos(Quem souber como usa-la, agradeço muito).
 
Realmente teria que usar o path absoluto, talvez daria pra usar as variaveis do windows, mais não sei se seria muita vantagem. Tavva pensando em montar algo como:
 
%DelphiHome%\bin\dcc32.exe -B %ProjetctName% -U%SearchPath% -N%OutPut% -E%OutPut% -LE%OutPut% -LN%OutPut%
 
e substituir essas variáveis pelos Paths absolutos antes de executar.
 
"c:\Arquivos de programas\Borland\Delphi7\Bin\Dcc32.exe" -B InfraCore.dpk -U%% -N..\..\Build -E..\..\Build -LE..\..\Build -LN..\..\Build
 
 

Outro problema encontrado foi a questão do parâmetro -E. Apesar de estar setado corretamente, ele não gerou a .bpl no lugar indicado. Não sei pq ignorou a definição em favor das configurações do projeto neste caso e não ignorou a opção -N. Em projetos de teste que eu fiz onde não tem a indicação de onde será gerado o binário, ele funcionou bem.
 
  -N   Diretório OutPut DCU
   -LE Diretório OutPut BPL
   -LN Diretório OutPut DCP
 
 
Um detalhe que percebi nos testes que fiz, tem que estar no diretório do projeto no momento da compilação. Isso é feito assim:
 
var
  SaveDir: String;
begin
  SaveDir := GetCurrentDir;
  try
    SetCurrentDir('DiretórioDoProjeto');
 
    (...) Compila o projeto (...)
  finally
    SetCurrentDir(SaveDir);
  end;
 
As versões do delphi instaladas, podem ser recuperadas pelo RegEdit
HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\ Versões anteriores do Delphi
HKEY_LOCAL_MACHINE\SOFTWARE\Borland\BDS    Versões mais recentes.
Falta o Lazarus, nunca utilizei, não sei onde encontrar essa informação.
 
Dentro de cada Chave do registro do delphi, tem um Valor de Sequencia chamado RootDir, que armazena o diretório onde o delphi está instalado.
 
O SearchPath fica no memo diretório do registro no root HKEY_CURRENT_USER, ma chave Library tem o valor "Search Path".
 
Aqui tenho o Delphi 5 e 7 instalados, e no Delphi 5 não tem o "Environment Variables", então creio que não poderemos utilizá-lo, a não ser que D5 não esteja nos planos.
 

Marcos Barreto

unread,
Jan 24, 2009, 3:01:54 AM1/24/09
to infra...@googlegroups.com
A maioria dos frameworks nao dão suporte mais a delphi 5 ou inferior pela falta de determinados recursos (que nao lembro quais são). Acho que o pessoal deveria trabalhar pelo menos com delphi 6.

Achei este artigo para se mecher nas variaveis de ambiente do delphi. Com isso acho que dá para criar uma variável lá chamada InfraDir para nao precisar usar path absolutos eu acho.

http://www.delphidabbler.com/software/envvars/main
http://www.delphidabbler.com/articles?article=6

Outros artigos que podem ajudar:
http://delphi.icm.edu.pl/ftp/d30free/pjenvvar.htm

Uma outra coisa que andei pensando é por que nao extrair do instalador do jedi o que precisamos, o codigo dele nao parece tão complexo.

Joao Morais

unread,
Jan 24, 2009, 5:49:44 AM1/24/09
to infra...@googlegroups.com
2009/1/24 Marcos Barreto <mrba...@gmail.com>:

> A maioria dos frameworks nao dão suporte mais a delphi 5 ou inferior pela
> falta de determinados recursos (que nao lembro quais são). Acho que o
> pessoal deveria trabalhar pelo menos com delphi 6.

Press é para D5 ou superior. A maior dificuldade que enfrento é com
Variants X Int64 cujo suporte nativo começou apenas no D6. De resto é
um compilador tão espetacular quanto os demais.

Joao Morais

Marcos Barreto

unread,
Jan 24, 2009, 11:31:59 AM1/24/09
to infra...@googlegroups.com
O que tem feito então em relação ao Int64 joão para poder compatibilizar a coisa?

Joao Morais

unread,
Jan 24, 2009, 12:22:11 PM1/24/09
to infra...@googlegroups.com
2009/1/24 Marcos Barreto <mrba...@gmail.com>:

> O que tem feito então em relação ao Int64 joão para poder compatibilizar a
> coisa?

{$ifdef d5down}
function PressD5VariantToInt64(AVariant: Variant): Int64;
var
VInt32: Integer;
begin
if TVarData(AVariant).VType = VT_DECIMAL then
Result := Decimal(AVariant).lo64
else
begin
VInt32 := AVariant;
Result := VInt32;
end;
end;

function PressD5Int64ToVariant(AInt64: Int64): Variant;
begin
TVarData(Result).VType := VT_DECIMAL;
Decimal(Result).lo64 := AInt64;
end;
{$endif}

É um hack, mas funciona bem.

Joao Morais

vitor rubio

unread,
Jan 26, 2009, 6:28:51 AM1/26/09
to infra...@googlegroups.com
Então, estamos procurando um meio open-source de fazer a compressão não para gerar o instalador do infra, mas para gerar os snapshots (zipadões) para download no sourceforge. Algo que aconteceria automaticamente a cada build ou deploy.


O 7zip é uma ótima opção, já está virando padrão mais do q winrar ou winzip. Comprime muito mais que rar ou ace. 

2009/1/24 Joao Morais <jcmor...@gmail.com>

Daniel Bastos

unread,
Jan 26, 2009, 8:45:20 AM1/26/09
to infra...@googlegroups.com
Galera, dei um olhada mais detalhada no xml do want da jvcl no fds.
1 - o xml não é compativel com a versão nova do want. Parece que a versão nova nem usa mais o xml. (Bom, eu não consegui fazer funcionar) parece que usa um script com uma linguagem parecida com Java chamado WantScript. Tem um PDF que vem junto, mas ta muito básico.
2 - Parece que com o want 0.3.3 é possível fazer a maior parte das tarefas. O xml da jvcl descreve como baixar a última revisão, compilar, empacotar e enviar por ftp.

No caso, poderia-mos usar o want mais antigo e migrar para o novo quando a doc estiver mais completa, procurar um novo gerenciador de build ou criar um projeto que faça estas tarefas por nos.

2009/1/26 vitor rubio <vitor...@gmail.com>

Então, estamos procurando um meio open-source de fazer a compressão não para gerar o instalador do infra, mas para gerar os snapshots (zipadões) para download no sourceforge. Algo que aconteceria automaticamente a cada build ou deploy.


O 7zip é uma ótima opção, já está virando padrão mais do q winrar ou winzip. Comprime muito mais que rar ou ace. 

Marcos George

unread,
Jan 26, 2009, 9:28:25 AM1/26/09
to infra...@googlegroups.com
Pessoal, eu não tive tempo de ler mais à respeito, mas seria bom dar uma olhada em http://cruisecontrol.sourceforge.net/

Att
Marcos George





Date: Mon, 26 Jan 2009 10:45:20 -0300
Subject: [Infra 526] Re: Instalador do Infra
From: danb...@gmail.com
To: infra...@googlegroups.com

Daniel Bastos

unread,
Jan 26, 2009, 10:52:52 AM1/26/09
to infra...@googlegroups.com
eu tb achei uma referência interessânte aqui:

http://www.codeplex.com/msbuildshellex/Wiki/View.aspx?title=MSBuild%20Tutorial&referringTitle=Manual

2009/1/26 Marcos George <mgnd...@msn.com>

Daniel Bastos

unread,
Feb 6, 2009, 11:00:14 AM2/6/09
to infra...@googlegroups.com
Dei uma olhada no CruiseControl. Mas parece que ele é só uma interfaçe web para gerenciadores de build (O qual nenhum deles dá suporte a pascal).

2009/1/26 Marcos George <mgnd...@msn.com>

André Luis Silveira

unread,
Feb 6, 2009, 11:17:11 AM2/6/09
to infra...@googlegroups.com
Gostaria de contribuir um pouco com essa parte. No site http://www.tbosystems.bluehosting.com.br/blog/?itemid=12 tem um tutorial sobre como usar o want para compilar e o 7z para compilar.
Quem fez esse post foi um colega de empresa e usamos da forma que ele descreve, sendo que fizemos algumas melhorias, tipo uma interface para o want, onde se pode configurar os projetos, envio automático para o ftp, entre outras coisa, se precisarem de uma ajuda nessa parte, acho que posso ajudar.

Marcos George

unread,
Feb 6, 2009, 2:25:38 PM2/6/09
to infra...@googlegroups.com
Para o pessoal que está vendo o instalador: http://www.mustangpeak.net/setupinstaller.htm
Esse instalador parece ser muito simples e fácil de usar. Dêem uma olhada. ok?

Att
Marcos George







Date: Fri, 6 Feb 2009 13:17:11 -0300
Subject: [Infra 563] Re: Instalador do Infra
From: gync...@gmail.com
To: infra...@googlegroups.com

Marcos Barreto

unread,
Feb 6, 2009, 10:20:55 PM2/6/09
to infra...@googlegroups.com
André, adorariamos contar com sua ajuda, sinta-se avontade em construir o script want, qualquer duvida é só falar cara, estou a disposição
Reply all
Reply to author
Forward
0 new messages