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.
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.
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.
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: