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.
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.
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
{$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
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.