Zipmaster - Manter a estrutura de pastas
Ola...
Estou utilizando o componente ZipMaster e me deparei com o seguinte problema...
Ao adicionar as opções ( "AddOptions := AddOptions + [AddDirNames, AddRecurseDirs]" ), para manter a estrutura das pastas, o arquivo zipado aparece representado com a estrutura de pastas a partir do diretório raiz "C", no caso:
"C:\Arquivos de programas\Temp\Teste\Teste.zip".
Preciso que seja mantida somente a estrutura a partir da pasta zipada e não a partir da raiz. Por exemplo se eu zipar a pasta "Temp" a aetrutura deveria ser:
"Temp\Teste\Teste.zip" ou "Teste\Teste.zip" e não "C:\Arquivos de programas\Temp\Teste\Teste.zip".
Alguém teria alguma idéia de como fazer isso?
Estou utilizando o ZipMaster 1.9 e Delphi 2007.
Atenciosamente
Sérgio
Estou utilizando o componente ZipMaster e me deparei com o seguinte problema...
Ao adicionar as opções ( "AddOptions := AddOptions + [AddDirNames, AddRecurseDirs]" ), para manter a estrutura das pastas, o arquivo zipado aparece representado com a estrutura de pastas a partir do diretório raiz "C", no caso:
"C:\Arquivos de programas\Temp\Teste\Teste.zip".
Preciso que seja mantida somente a estrutura a partir da pasta zipada e não a partir da raiz. Por exemplo se eu zipar a pasta "Temp" a aetrutura deveria ser:
"Temp\Teste\Teste.zip" ou "Teste\Teste.zip" e não "C:\Arquivos de programas\Temp\Teste\Teste.zip".
Alguém teria alguma idéia de como fazer isso?
Estou utilizando o ZipMaster 1.9 e Delphi 2007.
Atenciosamente
Sérgio
Sérgio Saibel
Curtidas 0
Melhor post
Eduardo Broering
23/05/2012
Sei que provavelmente você não precise mais desta solução, pelo tempo que passou desde que seu post foi aberto, mas como também precisei disso e não encontrei em local algum na internet, vou postar aqui para o caso de outra pessoa ter o mesmo problema.
Para resolver isto é simples na verdade, você deverá marcar no seu TZipMaster em AddOptions os itens AddDirNames e AddRecurseDirs e então definir o RootDir do seu TZipMaster e utilizar caminhos relativos (ao invés de absolutos) para indexar seus arquivos no zip gerado. Mais ou menos assim:
No exemplo acima, Zip é o nome dado ao seu e TZipMaster, e o arquivo compactado final estará da seguinte forma:
Sendo que nos diretórios do exemplo acima estarão os arquivos que estavam contidos respectivamente em C:\Arquivos de Programas\Seu programa\temp\diretorio1 e C:\Arquivos de Programas\Seu programa\temp\diretorio2
Para resolver isto é simples na verdade, você deverá marcar no seu TZipMaster em AddOptions os itens AddDirNames e AddRecurseDirs e então definir o RootDir do seu TZipMaster e utilizar caminhos relativos (ao invés de absolutos) para indexar seus arquivos no zip gerado. Mais ou menos assim:
Zip.RootDir := C:\Arquivos de Programas\Seu programa\temp\; //Caminho da pasta onde estarão os arquivos a serem inseridos no zip. Zip.ZipFileName := zips\Teste.zip; Zip.FSpecArgs.Add(diretorio1\); Zip.FSpecArgs.Add(diretorio2\); Zip.Add();
No exemplo acima, Zip é o nome dado ao seu e TZipMaster, e o arquivo compactado final estará da seguinte forma:
.. diretorio1/ diretorio2/
Sendo que nos diretórios do exemplo acima estarão os arquivos que estavam contidos respectivamente em C:\Arquivos de Programas\Seu programa\temp\diretorio1 e C:\Arquivos de Programas\Seu programa\temp\diretorio2
GOSTEI 1
Mais Respostas
Sérgio Saibel
17/08/2010
Ola Eduardo...
Realmente não é que não nececitasse mais desta informação, mas não estou mais trabalhando com este componente, mesmo assim é legal ver que as pessoas ainda compartilham conhecimentos.
Se você trabalha com este componente cuidado com o caminho que você informar, pois se a pasta for no primeiro nível após a raiz(c:\pastaPrimeiroNivel) e estiver vazia pode dar problema, pois o zipmaster compactará o seu sistema operacional.
De qualquer forma obrigado.
Realmente não é que não nececitasse mais desta informação, mas não estou mais trabalhando com este componente, mesmo assim é legal ver que as pessoas ainda compartilham conhecimentos.
Se você trabalha com este componente cuidado com o caminho que você informar, pois se a pasta for no primeiro nível após a raiz(c:\pastaPrimeiroNivel) e estiver vazia pode dar problema, pois o zipmaster compactará o seu sistema operacional.
De qualquer forma obrigado.
GOSTEI 0
Wilson Rabelo
17/08/2010
Sei que provavelmente você não precise mais desta solução, pelo tempo que passou desde que seu post foi aberto, mas como também precisei disso e não encontrei em local algum na internet, vou postar aqui para o caso de outra pessoa ter o mesmo problema.
Para resolver isto é simples na verdade, você deverá marcar no seu TZipMaster em AddOptions os itens AddDirNames e AddRecurseDirs e então definir o RootDir do seu TZipMaster e utilizar caminhos relativos (ao invés de absolutos) para indexar seus arquivos no zip gerado. Mais ou menos assim:
No exemplo acima, Zip é o nome dado ao seu e TZipMaster, e o arquivo compactado final estará da seguinte forma:
Sendo que nos diretórios do exemplo acima estarão os arquivos que estavam contidos respectivamente em C:\\Arquivos de Programas\\Seu programa\\temp\\diretorio1 e C:\\Arquivos de Programas\\Seu programa\\temp\\diretorio2
Para resolver isto é simples na verdade, você deverá marcar no seu TZipMaster em AddOptions os itens AddDirNames e AddRecurseDirs e então definir o RootDir do seu TZipMaster e utilizar caminhos relativos (ao invés de absolutos) para indexar seus arquivos no zip gerado. Mais ou menos assim:
Zip.RootDir := C:\\Arquivos de Programas\\Seu programa\\temp\\; //Caminho da pasta onde estarão os arquivos a serem inseridos no zip. Zip.ZipFileName := zips\\Teste.zip; Zip.FSpecArgs.Add(diretorio1\\); Zip.FSpecArgs.Add(diretorio2\\); Zip.Add();
No exemplo acima, Zip é o nome dado ao seu e TZipMaster, e o arquivo compactado final estará da seguinte forma:
.. diretorio1/ diretorio2/
Sendo que nos diretórios do exemplo acima estarão os arquivos que estavam contidos respectivamente em C:\\Arquivos de Programas\\Seu programa\\temp\\diretorio1 e C:\\Arquivos de Programas\\Seu programa\\temp\\diretorio2
Obrigado! Me ajudou muito.
Segue como fiz.
try
ZipMastSAT := TZipMaster.Create(nil);
ZipMastSAT.ZipFileName := S;
ZipMastSAT.AddOptions := ZipMastSAT.AddOptions + [AddDirNames, AddRecurseDirs, AddEmptyDirs];
ZipMastSAT.FSpecArgs.Clear;
ZipMastSAT.RootDir := 'C:\\Diretorio';
ZipMastSAT.FSpecArgs.Add('\\subdir01\\*.*');
ZipMastSAT.FSpecArgs.Add(\\subdir02\\*.*');
ZipMastSAT.Add;
finally
ZipMastSAT.Free;
end;
Obrigado pela preocupação. Realmente nao achei na net
GOSTEI 1