-кýω,, -кýω,,  • 14.09.12 11:44

Criando um Atualizador para seus programas. Empty Criando um Atualizador para seus programas. 14.09.12 11:44

Atualizador para seus Programas.

Bom, esse aplicativo é muito útil pra você não ficar indo de computador em computador quando vender seus programas, seja em C, C++ etc, esse é somente o atualizador. Que servirá para outras coisas também

Primeiro, vamos adicionar os componentes, Eu estarei usando Delphi7.

1 Page Control.(Win32) Crie uma aba e nomeie-a de LOG.
Adicione 2 Buttons(Solicitar Atualização), e outro (Enviar Logs (Fechar));
1 Timer, IdHTTP1(IndyClients) (propriedade Host, coloque seu site, e o local onde vai pegar os programas para atualizar(pasta), eu usei http://192.168.0.196:8090/ClientServer/ );
Adicionei 3 .ini nessa pasta no site:
Hook.ini (versão do arquivo, você deve mudar isso, toda vez que achar que tem que fazer uma atualização)
Hookatt.ini (adicione o nome do arquivo dentro desse ini, deixei att.txt como exemplo)
Crie um arquivo para baixar, o nome dele deve estar no HookAtt.ini ( usei att.txt).

// Para adicionar mais programas apenas crie outro .ini, com e adicione o nome no ListBox 1 e 2.

1 Button extra para fechar.
1 Memo;
Crie um arquivo chamado 'ips.ini' na pasta do atualizador, será o log.

Ficará assim:

Criando um Atualizador para seus programas. OeAHj

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~

Criei outra aba no TPageControl, denominada Configurações.
Adicionei 1 Lab.el Caption: para IP: e um Edit Vazio.
Adicionei um Button Caption para Configurar IP
2 Lab.els e 2 ListBox, E adicione os itens no listbox. Eu usarei Hook como exemplo.
No Segundo ListBox eu adicionei \Hook por exemplo, pois seria a pasta.
Adicionei 3 Memos de Visible := False, e nomeei-os para Meemo1 (para não atrapalhar os memos.)
Adicionei 2 Edits, Com o Text := Configure o Programa. E Visible False.
Adicionei 1 Lab.el e Renomeei-o de DataLab.el para não atrapalhar, deixei o Caption Vazio. E Visible False.


Criando um Atualizador para seus programas. S4QRo

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~
Programando.

No Button3 Eu adicionei somente application.Terminate, para caso bugar eu teria como fecha-lo.

No Evento Form1.OnCreate
Código HTML:
Código:
Memo1.Lines.LoadFromFile('ips.ini');

E no Close:
Código HTML:
Código:
Memo1.Lines.SaveToFile('ips.ini');

No Solicitar atualização eu usei:
Código HTML:
Código:
var
site,atualizador: String;    //variável = linha
MyFile : TFileStream;  // myfile (arquivo) = Arquivo Stream
begin
Memo1.Lines.Add(Edit1.Text + ' ' + ' Requisitando atualização do programa :' + ' ' + Edit2.Text + ' / ' + data*****.Caption);
begin // o code acima adiciona o log no memo
site:= IdHTTP1.Host;  // Define o Site = Host do idhttp
atualizador:= Edit2.Text+'.ini';  // pega o arquivo .ini do Edit2, no site (seria Hook.ini)
MyFile := TFileStream.Create(Edit3.Text+'\'+Edit2.Text+'.ini', fmCreate); // Cria o arquivo na pasta do programa.
try
IdHTTP1.Get(IdHTTP1.Host+Edit2.Text+'.ini', MyFile);  // Pega o arquivo no host, e salva no MyFile ( linha acima)
finally
MyFile.Free;
meemo2.Lines.LoadFromFile(Edit3.Text+'\'+Edit2.Text+'.ini');  // Pega o .ini que baixamos agora e adiciona no meemo2
meemo3.Lines.LoadFromFile(Edit3.Text+'\'+Edit2.Text+'versao.ini'); // pega o arquivo versao.ini que deve estar na pasta do programa
if meemo2.Lines[0] = meemo3.Lines[0] then // compara a primeira linha
begin  // se estiver igual
MessageBoxA(handle, 'Atualização completa!','Atualizado!',0);  // programa atualizado.
Memo1.Lines.Add(Edit1.Text + ' ' + ' Programa Já Atualizado : ' + ' ' + Edit2.Text + ' / ' + data*****.Caption); // add log
end else  // se não
begin
site:= IdHTTP1.Host;  // vai no site
atualizador:= Edit2.Text+'att.ini';  // Pega o Hookatt.ini no site
MyFile := TFileStream.Create(Edit3.Text+'\'+Edit2.Text+'att.ini', fmCreate); // cria o arquivo na pasta do programa
try
IdHTTP1.Get(IdHTTP1.Host+Edit2.Text+'att.ini', MyFile); // pega o arquivo no site e adiciona as linhas dele, no .ini baixado acima
finally
MyFile.Free; // libera o myfile (reseta)
meemo1.Lines.LoadFromFile(Edit3.Text+'\'+Edit2.Text+'att.ini'); // pega o att.ini e carrega no meemo1
site:= IdHTTP1.Host; // vai no site
atualizador:= meemo1.Lines[0];  // baixa o que está escrito no meemo1
MyFile := TFileStream.Create(Edit3.Text+'\'+meemo1.Lines[0], fmCreate);  // Cria o arquivo na pasta do programa
try
IdHTTP1.Get(IdHTTP1.Host + meemo1.Lines[0], MyFile); // adiciona o conteúdo no arquivo
finally
MyFile.Free; // libera o myfile
meemo2.Lines.SaveToFile(Edit3.Text+'\'+Edit2.Text+'versao.ini'); // adiciona o meemo2 (versão) no arquivo de versão
Memo1.Lines.Add(Edit1.Text + ' / '  + Edit2.Text + ' Programa Atualizado!! ' + ' / ' + data*****.Caption); // adiciona o log
end;
end;
end;
end;
end;
end;

No Enviar Logs eu usei:
Código HTML:
Código:
Form1.Hide;  // Minimiza o form1
Form2.Show; //mostra o form2
Memo1.Lines.SaveToFile('ips.ini');  //salva o log
ShellExecute(handle,'open',PChar('ips.ini'), '','',SW_SHOWNORMAL); // executa o log (para enviar)

Adicionei um Timer e no Ontimer usei:
Código HTML:
data*****.Caption := DateToStr(Date) + ' / ' + TimeToStr(Time); // mostra a hora no timer1

Na PAGE 2
No Configurar ip eu usei:
Código HTML:
Código:
Edit1.Text := LocalIP  // adiciona a função LocalIP no edit


No OnClick do ListBox1 eu usei:
Código HTML:
Código:
case ListBox1.ItemIndex of
      0 : Edit2.Text := 'Hook';
      1 : Edit2.Text := 'Rasengan';
      2 : Edit2.Text := 'Shock';
end;
// adiciona no edit2 o nome do programa

No listbox 2 eu usei
Código HTML:
Código:
 case ListBox1.ItemIndex of
      0 : Edit3.Text := 'C:\Arquivos de Programas\Victor Programs\Hook\'  ;
      1 : Edit3.Text := 'C:\Arquivos de Programas\Victor Programs\Rasengan\'      ;
      2 : Edit3.Text := 'C:\Arquivos de Programas\Victor Programs\Shock\'      ;
end; // adiciona a pasta no Edit3

Nas uses utilizei:
Código HTML:
Código:
ShellApi,  WinSock;

Utilizei a função abaixo do {S$ .dfm}
Código HTML:
Código:
function LocalIP: String;
type
  TaPInAddr = array [0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array [0..63] of char;
  i: Integer;
  GIniData: TWSADATA;
begin
  WSAStartup($101, GInitData);
  Result := '';
  GetHostName(Buffer, SizeOf(Buffer));
  phe :=GestHostName(buffer);
  if phe = nil then Exit;
  pptr := PaPInAddr (Phe^.h_addr_list);
  i := 0;
  while pptr^[i] <> nil do
  begin
          result :=StrPas(inet_ntoa(pptr^[i]^));
          Inc (i);
  end
  WSACleanup;
  end;

CREDITOS Totais á 'Victor~* [OUTRO FÓRUM]


Última edição por Cancelaar- em 14.09.12 22:44, editado 1 vez(es)

TioBlitz TioBlitz  • 14.09.12 13:46

Criando um Atualizador para seus programas. Empty Re: Criando um Atualizador para seus programas. 14.09.12 13:46

Estimado usuário , ...

Olá ,

Bom , não vou ja questionar seu tópico mais creio que precisa-se botar os créditos , mais retirando as palavras citadas o tópico esta super organizado , bem feito , adorei os print pode ajudar bastante , mais como eu ja disse em seus tópicos você fazendo vídeos ficaria bem melhor e seu tópico ficaria em melhor qualidade

Cumprimentos

Wallace

-кýω,, -кýω,,  • 14.09.12 22:45

Criando um Atualizador para seus programas. Empty Re: Criando um Atualizador para seus programas. 14.09.12 22:45

Me desculpe, acabei esquecendo dos créditos !
Mas já tá tudo certo, créditos adicionados.

Até mas,
Permissões neste sub-fórum
Não podes responder a tópicos

BH Servers

Recomendamos a BH Servers com proteção DDOS gratuita em Cloud Server de alta performance. Entrega imediata.