#1Qui 13 Jun - 8:08
Criando um Launcher.
Launcher com sistema de verificação por bytes.
Bom, primeiramente, como sempre irei explicar como o programa funcionará;
Bom, primeiramente, como sempre irei explicar como o programa funcionará;
Ele irá verificar se um arquivo "x" existe, se não existir ele baixa o arquivo pelo host, se existir, ele verifica os bytes, se estiverem corretos, ele continua verificando outros arquivos/pastas.
Modificação de qualquer byte ele baixa o arquivo/pasta e cola na pasta desejada (atualização).
Ele verifica a versão do Launcher e do Host (applicativo) e caso necessário auto-update.
Requisitos:
Paciência; é um trabalho demorado e exige esforço.
Conhecimentos básicos de Delphi; Analização de componentes/Compreensão das codes.
Um Host(igual a todos os games on-line); No meu caso é apenas um projeto, então vamos usar AppServ para emular um host no 127.0.0.1:80 (8090).
Este launcher pode ser modificado à qualquer game.
Neste tutorial ensinarei por meio de Aquivo por arquivo, porém pode-se verificar uma pasta inteira (no caso de ser muitos aquivos) e atualizar 1 pasta inteira ao invés de 1 arquivo. ( vou deixar a code para verificar a pasta, mas vou fazer por arquivos). Entretanto você pode mesclar arquivos importantes e não-importantes verifique por pasta mesmo....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~
Mãos à obra !
*com intuito de evitar Ctrl+c e v será postado imagens. Aprenda não copie.
Paciência; é um trabalho demorado e exige esforço.
Conhecimentos básicos de Delphi; Analização de componentes/Compreensão das codes.
Um Host(igual a todos os games on-line); No meu caso é apenas um projeto, então vamos usar AppServ para emular um host no 127.0.0.1:80 (8090).
Este launcher pode ser modificado à qualquer game.
Neste tutorial ensinarei por meio de Aquivo por arquivo, porém pode-se verificar uma pasta inteira (no caso de ser muitos aquivos) e atualizar 1 pasta inteira ao invés de 1 arquivo. ( vou deixar a code para verificar a pasta, mas vou fazer por arquivos). Entretanto você pode mesclar arquivos importantes e não-importantes verifique por pasta mesmo....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~
Mãos à obra !
*com intuito de evitar Ctrl+c e v será postado imagens. Aprenda não copie.
Coloque um arquivo na pasta do launcher. (exemplo usado main.exe).
Inserimos no Form:
1 Gauge (samples)
1 Label (stardard)
2 Botões
1 IdHTTP (Indy Clients)
1 Edit
3 Timers (já nomeie o 3º de ativador para não confundir).
Timer 1 e 2 = Enabled:= False;
ativador = Interval 5000 (5 segundos)
Button 1 = Jogar, Enabled := False;
Button 2 = Sair.
Label 1 = Checando atualizações de (nome do programa).
Deverá ficar mais ou menos assim: (coloquei um banner XD)
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Programando....
Primeiro fazemos as Funções e Uses:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~
Evento On WorkBegin do IdHTTP.
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Evento On WorkEnd do IdHTTP.
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link][Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
OnClick do Sair:
Código PHP:
- Código:
Application.Terminate;
On Click do Jogar.
Você deverá usar o comando do seu game, para mu é:
Você deverá usar o comando do seu game, para mu é:
Código PHP:
- Código:
winexec('main.exe connect /u127.0.0.1 /p44405', sw_normal);
Application.Terminate;
No Timer Ativador, esse irá ativar os demais após 5 segundos. Usaremos:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
No primeiro timer, iremos ver se o main.exe existe e quantos bytes ele tem.
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
No timer 2 verificaremos com pasta agora...
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pronto, acabamos de fazer como atualizar por verificação.
Para verificar corretamente o byte de um arquivo usamos:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
No primeiro timer, iremos ver se o main.exe existe e quantos bytes ele tem.
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
No timer 2 verificaremos com pasta agora...
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pronto, acabamos de fazer como atualizar por verificação.
Para verificar corretamente o byte de um arquivo usamos:
Código PHP:
- Código:
AssignFile( arquivo, '.\Main.exe' );
Reset( arquivo );
// abre em modo de leitura
ShowMessage(intToStr(FileSize(arquivo)));
Para pastas:
Código PHP:
- Código:
ShowMessage(FloatToStr(GetDirSize('.\data\', True) / Sqr(1024)))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~