L2 Updater Source Code

EdCigano

Vagabond
Customer
Cansado desses updater que você precisa cagar um abacaxi para usar? Ou que o autor posta e sai correndo pau no c* de quem ta lendo e não ajuda a usar?

Então ta ai, feito com auxilio do ChatGPT e Google Gemini. Testado em meu próprio servidor e aprovado.

Sobre o updater, foi desenvolvido utilizando Python 3.11 e utilizando o Pipenv como gerenciador de dependências.

Segue o link para download: https://drive.google.com/file/d/1jeB9V5gKBI43Nkbd2zb0DAhAcs7L9HJ1/view?usp=sharing

Como utilizar:

Acesse o python.org, ou clique aqui e baixe direto a versão 3.11 do Python.
Após o download, faça a instalação do python. Não esqueça de no final da instalação marcar a caixa "ADD PYTHON TO PATH". Do contrário, não conseguirá usar o python pelo cmd.

Após a instalação do python, baixe o updater e descompacte ele em qualquer lugar. Depois, entre na pasta do updater pelo CMD e digite py -3.11 -m pip install --upgrade pip. Isto irá atualizar o instalador de pacotes do python.

Após a atualização do pip, digite py -3.11 -m pip install pipenv. Isto irá atualizar o Pipenv que é o gerenciador de dependencias.

Após a instalação do Pipenv, digite py -3.11 -m pipenv shell --python 3.11. Isto irá criar um ambiente virtual do python 3.11 que será utilizado para instalação das bibliotecas utilizadas no projeto.

Após a inicialização do ambiente virtual, digite pipenv install. Isto irá instalar/atualizar as bibliotecas para a versão especificada no pipfile.lock.

Após a instalação das bibliotecas, copie os arquivos do jogo que serão utilizados pelo updater. Estes arquivos devem estar dentro da pasta "game_files". Jogue dentro de game_files tudo que será utilizado pelo updater como por exemplo a pasta system.

Após copiar os arquivos, digite o comando py packager.py. O packager.py irá compactar os arquivos e criar o arquivo manifest.json. Este arquivo será utilizado pelo updater para baixar e verificar o hash dos arquivos. Os arquivos serão criados dentro da pasta outputs_zips. Já o manifest.json será criado dentro da pasta raiz do projeto. Os arquivos zipados e o manifest devem ser disponibilizados juntos dentro de uma pasta disponível na web para que o updater possa ler. Por exemplo https://l2algumacoisa.com.br/updater/data/. A pasta data deve conter o manifest e todos os zips gerados pelo packager.py.

Após gerar os arquivos, vamos, abra o arquivo updater.py, nele precisaremos alterar apenas as seguintes informações:
MANIFEST_URL = "https://SEU_WEBSITE/updater/data/manifest.json" <- Aqui você irá alterar com seu domínio.
def create_website_button(self):
def open_website_link():
webbrowser.open("https://www.SEU_WEBSITE.com.br") <- Isso aqui é um botão disponível no updater para que o usuário possa clicar e abrir seu website no navegador.
def create_discord_button(self):
def open_discord_link():
webbrowser.open("https://discord.gg/XXXXX") <- Aqui você coloca a url de convite para o seu discord. Este é um botão com o ícone do discord que ficará disponível no updater.

url = f"https://SEU_WEBSITE.com.br/static/updater/data/{name}" <- Aqui é a url que o updater irá utilizar para verificar o hash dos arquivos e, se necessário, baixar e atualizar a versão local.

Após estas alterações, copie o comando dentro do arquido comando.txt, ou, copie o comando a seguir: pyinstaller --uac-admin --windowed --noconsole --onefile --clean --icon=l2.ico --add-data "l2.ico;." --add-data "background2.png;." --add-data "close_button.png;." --add-data "discord.png;." --add-data "website.png;." --add-data "updater.manifest;." updater_automatico_janela.py

Este comando irá gerar um arquivo executavel dentro da pasta dist. Basta copiar este arquivo e jogar dentro da pasta do seu L2. Se os arquivos gerados no packager.py estiverem corretamente disponíveis em seu site, o updater irá verificar se há alterações e atualizar automaticamente. Também há um botão de full check para forçar a atualização, bem como o botão de PLAY para iniciar o jogo. O botão de PLAY só fica disponível após a atualização/verificação dos arquivos.

1750003781933.webp

Espero que seja útil para quem precisa de um updater funcional e fácil de utilizar. Eu mesmo tive muita dificuldade em achar um updater bom e que não me fosse cobrado um olho.

Qualquer dúvida, reclamação ou xingamento, fiquem a vontade.



OBS: O código é totalmente Open Source, fiquem a vontade para alterar o que quiserem e replicar. Se possível, apenas deem os créditos.
 
Last edited:
Back
Top