#1 Criando um Atualizador para seus programas. Ter Out 02, 2012 2:07 pm
Style~°
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:
1 Button extra para fechar.
1 Memo;
Crie um arquivo chamado 'ips.ini' na pasta do atualizador, será o log.
Ficará assim:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
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.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~
Programando.
No Button3 Eu adicionei somente application.Terminate, para caso bugar eu teria como fecha-lo.
No Evento Form1.OnCreate
Código HTML:
E no Close:
Código HTML:
No Solicitar atualização eu usei:
Código HTML:
No Enviar Logs eu usei:
Código HTML:
Adicionei um Timer e no Ontimer usei:
Código HTML:
Na PAGE 2
No Configurar ip eu usei:
Código HTML:
No OnClick do ListBox1 eu usei:
Código HTML:
No listbox 2 eu usei
Código HTML:
Nas uses utilizei:
Código HTML:
Utilizei a função abaixo do {S$ .dfm}
Código HTML:
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:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
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.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~
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]