Ir para conteúdo
  • Cadastre-se

dev botao

Doação de componente


  • Este tópico foi criado há 4699 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Buenas ...

A algum tempo eu havia me deparado com um problema sério referente à atualização de minhas aplicações, experimentei e desenvolvi inúmeras rotinas para tentar sanar o problema que de inicio parecia facil mas sempre me custou muito tempo e dor de cabeça. Ultimamente andei pesquisando sobre o assunto e encontrei o componente TOXAutoUpdate, infelizmente a versão final contém inúmeros problemas (sem ofensa ao criador) e foi inviavel utiliza-la.

Usando a como base de "inspiração" eu acabei escrevendo meu próprio componente de Auto Atualização e estou com uma versão estável e funcional, gostaria de contribuir com o projeto fornecendo-o para se integrar ao conjunto já existente.

Componente atual TJSi

Update selecionavel por FTP ou HTTP

Seleção de multiplos arquivos para atualização

Hash MD5 de cada arquivo e do arquivo compactado final

Validação do arquivo de atualização

Upload via IDE ou procedure run-time (FTP)

Nome do arquivo de controle, arquivo compactado, diretorio de upgrade(onde é gerado o arquivo que será mandado para o servidor) e update (onde é armazenado o arquivo quando uma atualização é feita) configuraveis

Mensagem informando quando há uma nova atualização disponivel.

O componente ainda necessida de mais recursos como eventos que eu nao tive a necessidade e por isso acabei nao implementando e uma boa maquiada no codigo original tambem se faz necessário, mas o importante é que está 100% funcional e se houver interesse, eu poderei ajudar a mante-lo na versão para Delphi 7.

Contato - [email protected] -Email

[email protected] - MSN

PS : Pensei em anexar o componente ao topico mas nao sei se é permitido, então me avisem se esse seria o meio mais correto que eu anexo os fontes e um descritivo do componente.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa noite

Sim pode se anexar ao tópico

fiquei interessado em ver o funcionamento de seu componente

caso você possa anexar e eu me familiarizar com ele posso portar ele para lazarus

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Pois bem, o farei assim que possível ....

já estou com uma lista de futuras alterações para o componente, como controle perpétuo de versões para que seja possível fazer "downgrade" ou selecionar qual versão disponível será instalada. :P

Link para o comentário
Compartilhar em outros sites

Ae galera, apesar de ainda estar bastante crú ja da pra usar numa boa

o anexo esta em compactado com rar para abri-lo voce vai precisar do winrar ou similar.

qualquer coisa só entrar em contato comigo.

OBS: Esqueci de mencionar, so foi testado no Delphi 7, se alguem rodar em outra versão por favor me informe.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Oi Strago,

Muitíssimo obrigado pela sua oferta... Infelizmente só poderei analisar o componente na semana que vem :(

Mas a ideia do componente é ótima...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

sem problema, infelizmente ainda não pude fazer as atualizações que eu estava prevendo, mas acredito que até lá eu já tenha feito mais modificações no componente.

EDIT 07/05/2011

Hoje efetuei a prova de fogo do componente e é com imensa satisfação que venho informar que o componente de atualização automática funciona perfeitamente.

Oito aplicações diferentes

Usando 6 servidores distintos

Mais de 800 estações

Versões de Windows váriadas (XP/2000/SEVEN/W3K TERMINAL SERVER)

UPLOAD IDE - Envolve, compressão, hash, dtx e envio ao servidor usando a IDE do Delphi - NÃO FORAM ENCONTRADOS PROBLEMAS

UPLOAD Runtime - Envolve, compressão, hash, dtx e envio ao servidor usando rotina de upload - NÃO FORAM ENCONTRADOS PROBLEMAS

ATUALIZAÇÃO - Envolve, download do dtx, download do zip, verificação de integridade do zip, descompressão, verificação de integridade dos arquivos descomprimidos, auto-atualizações - NÃO FORAM ENCONTRADOS PROBLEMAS (Somente um detalhe, ao gerar o arquivo de lote para a atualização o componente exibe uma caixa de dialogo informando a ação. Essa caixa será removida).

Conclusão : PRÓXIMO DA PERFEIÇÃO :(

EDIT 08/05/2011

É, parecia tudo perfeito mas encontrei um pequeno erro, a rotina que faz a comparação das versões sempre retorna necessidade de atualização do aplicativo.

Link para o comentário
Compartilhar em outros sites

Ae pessoal,

Primeiro, eu gostaria de saber se estão tento algum problema com a utilização com componente, seja na instalação ou no uso, qualquer dúvida me avise.

Segundo, se tem alguma sugestão ou crítica a fazer, fiquem a vontade.

Por ultimo, vou começar a manter o componente em Delphi 2010 (RAD Studio 2010).

Estou trabalhando na nova versão, mais elaborada e mais intuitiva, assim que estiver concluída eu posto aqui.

EDIT - 13/05/2011 - 20:18 GTM -4

Como prometido, Pacotes para versões Delphi 7 e Delphi 2010 no anexo

Eu aproveitei pra organizar os arquivos do diretório e corrigir alguns possíveis bugs de compatibilidade, tais como Unit MD5 virou UntMD5, etc.

Exclua a versão anterior (caso tenha instalado), selecione o pacote para o seu Delphi, compile e instale.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Ishiwatari,

Estive olhando (ainda superficialmente) os fontes.. e gostaria de lhe propor as seguinte modificações...

- Troca da dependência da Indy, pela Synapse. Hoje em dia o ACBr já distribui a Synapse que é um conjunto de bibliotecas que permite o uso de vários protocolos TCP além de acesso a Porta Serial. A synapse é capaz de fazer qualquer tarefa que a Indy realize, e é bem mais leve, e compatível com Linux e Lazarus/FPC

- Evitar ao máximo o uso de formulários dentro do componente. Isso sempre será uma fonte de problemas (Ex: versões diferentes de IDEs, suporte a Lazarus, etc)... Os Formulários podem ser substituídos por eventos no componente. O componente dispara o Evento sempre que precisar que o usuário informe algo, e desta maneira cada programador pode customizar os formulários (o componente ACBrTEFD trabalha dessa maneira)

- Integração com ACBrEAD e/ou evento para o calculo do Hash e MD5... (o ACBrEAD usa o OpenSSL, para criar MD5 e vários outros tipos de Hash e criptografia)

- Evento para a compactação / descompactação... Nem todos podem querer ficar dependentes dos OBJs utilizados para a compactação, no Lazarus/FPC por exemplo, existe compactação de ZLib/ZIP nativa na linguagem

- A criação de um Projeto Demo... Nada melhor que um Demo para ver como as coisas funcionam. Isso será ainda mais necessário se os formulários forem removidos do componente.

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Mas como eu havia desenvolvido inicialmente o projeto para uso independente de uma "biblioteca" eu dei preferência os recursos nos quais eu poderia disponibilizar para os possiveis usuários sem maiores problemas, pensando também que a maioria das pessoas tem o indy disponível na IDE.

Vou analisar a Synapse e olhar o ACBrEAD para substituir os métodos existentes e colocar os eventos.

O demo é tranquilo, vou revisar todo o componente (se me permite ja na nomenclatura do ACBr, e assim que possível vou disponibilizar a nova versão).

Link para o comentário
Compartilhar em outros sites

Estou procurando pessoas que possuam outras versões de delphi instaladas e que estejam dispostas a testar o componente pra mim, coisa simples, se da algum erro na compilação do pacote por exemplo.

quem estiver disposto a ajudar, me adicione no msn [email protected]

Estou trabalhando na versão nova e quero fazer o upload com tudo funcionando.

Link para o comentário
Compartilhar em outros sites

Se puder me informar os erros que ocorreram pra que eu corrija na nova versão ...

Se eu puder chutar, é bem provável que tenha retornado erros referente a alguns metodos referentes a indy, se for esse o caso, abra a unit JSi e adicione um {$IFDEF} para a versão do seu compilador onde se encontram as outras condições ja pré estabelecidas....

Agora, se quiser aguardar a nova versão, não estou mais usando a indy nem o tbackup, então esses problemas deixarão de existir.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Oi strago,

Alguma dúvida com a Synapse ? Fique a vontade para pedir ajuda se necessário ;)

Aproveitando, o componente ACBrCNIEE pode ser de grande ajuda no uso da Synapse

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Eu vou começar o desenvolvimento das rotinas de envio e recebimento agora, já concluí as rotinas de compressão e descompressão e estão 100%, vou olhar o ACBRCNIEE

o problema maior é a questão do Lazarus/FPC no linux, eu uso a API do windows pra matar os processos ativos e arquivo de lote para efetivar as atualizações, se alguem puder ajudar com essa parte, acho que ja posso deixar o componente compativel com o lazarus.

tenho algum conhecimento de bash script mas nao sei praticamente nada de expressoes regulares (que seria muito util pra gerar o script de atualização) e eu não sei se o lazarus trabalha com pid files para os binários, se ele não trabalha com os pid, precisarei mesmo usar expressões regurales pra filtrar a saida do comando `ps` para matar o processo do binario.

Vou tentar um método tupiniquim pra ver se deixo pelo menos funcional para o lazarus. (e ainda tem o detalhe da permissão para o kill -9 do linux)

Acho que vou seguir a filosofia do Jack ... "Vamos por partes ..."

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Acho que o nome do binário a ser morto, pode ser uma propriedade do componente.... e se ele não for especificado, considera o próprio, ou seja, Application.ExeName... nesse caso nem é preciso um Kill... Application.Terminate já resolve (isso é até mais amigável, pois dá ao programador a chance de salvar seus dados)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

o problema é que podem ocorrer falhas no processo de atualização usando o application.terminate. pra tentar contortar isso vou ter que criar um loop no arquivo de lote/bash e um temporizador OU posso usar um:

ECHO Feche todos as copias do "APPNAME" em execucao.

PAUSE (Pressione qualquer tecla para continuar) implicito do DOS

e algo parecido no bash script do linux

Não é uma saida elegante porque o compo vai abrir uma tela do DOS/Terminal mas até agora acho que foi o método mais seguro que eu consegui pensar.

PS: Fiz um "fork" na ideia do ACBrCNIEE ;D, espero que não fique chateado com isso :P

Link para o comentário
Compartilhar em outros sites

  • Consultores

A pedido do strago, estou trancando o tópico.

O novo tópico está em viewtopic.php?p=9403#p9403

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4699 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.