Pablo César escreveu:Maligno, já que você é a favor do WINZIP, poderia nos dar um exemplo de como é acionado o WINZIP de dentro do seu aplicativo para os seus clientes ?.
Não uso o WinZIP, mas o WZZip, que é a versão de linha de comando, pelo DOS. Ele é só uma interface que permite utilizar o WinZip.
Criei uma interface própria, em que o usuário monta um script com suas configurações de back-up. Nele são definidos, além do básico (diretório fonte, arquivo destino, senha, etc.) quais arquivos serão ignorados, listas de extensões ignoradas, ou mesmo diretório ignorados, etc. Essas informações são salvas em arquivos do tipo INI (é outro sub-sistema que eu fiz). Exemplo do meu próprio back-up:
Código: Selecionar todos
[ID]
NIG = C,"639472"
Versao = C,"1.0"
Descricao = C,"BACK-UP DIRETORIO DE TRABALHO D:\WORK"
UltAltData = D,20070425
UltAltHora = C,"08:11:35"
UltAltUsuario = C,"StdUser_ABCDEFG"
[REGISTRO]
UltExecData = D,20070605
UltExecHora = C,"15:56:26"
UltExecUsuario = C,"StdUser_ABCDEFG"
UltExecResult = N,0
[ARQUIVOS]
Empresas = L,0
EmpresaNome = C,""
EmpresaSigla = C,""
FonteDif = L,1
FonteDifDir = C,"d:\work\*.*"
Destino = C,"c:\<ano4><mes><dia>.zip"
Exclui_BAK = L,1
Exclui_BAT = L,0
Exclui_COM = L,1
Exclui_EXE = L,1
Exclui_HLP = L,1
Exclui_CDX = L,1
Exclui_PIF = L,1
Exclui_RPT = L,1
Exclui_TBF = L,1
Exclui_TBV = L,1
Exclui_TMP = L,1
Exclui_PACKS = L,0
Exclui_Lista2 = C,"*.~*,*.fdb,*.nbt,*.map,*.obj,*.ppo,*.il*,*.dll,*.tds,;
*.res,*.wav,d:\work\cd\*.*,d:\work\website\*.*"
[PARAMETROS]
ProgBackUp = C,"c:\arquiv~1\winzip\wzzip.exe"
BKPIncremental = L,0
FormatarDisco = L,0
ApagarDisco = L,0
ProtegComSenha = L,1
PesqDiretorios = L,1
SalvDiretorios = L,1
UsaNomesLongos = L,1
A partir disso, ao acionar a execução do back-up, carrego o INI, monto a matriz que agrupa essa informações todas e monto a linha de comando. Finalmente, pela função
SwpRunCmd(), executo o PKZip ou WZZip, conforme a escolha do cliente. O programa é identificado pelo CRC32 dele, já previamente calculado. E eu preciso saber qual é o compactador utilizado porque as opções de configuração usam switches diferentes. Sem conhecer as diferenças seria impossível montar minha linha de comando.
Aliás, falando em CRC32, o arquivo INI não pode ser alterado em editores comuns. Apenas através do programa. Não quero correr o risco de causarem danos aos scripts. Garanto isso injetando uma assinatura digital, também por CRC32, mas modificado.
Detalhe: repare que a ID "REGISTRO" carrega a informação de quando e quem executou esse script pela última vez.
Como o usuário pode montar vários scripts, tenho um browser que mostra todos os scripts criados. O usuário escolhe um e executa. Mas tenho como configurar um "default", para execução rápida ou agendada.