From 951feb57d4ec7115b5937b46b88eb5c6a698a214 Mon Sep 17 00:00:00 2001 From: henrique Date: Sun, 22 Feb 2026 23:45:53 -0300 Subject: [PATCH] ee --- instalador/Instalador_Online_VR4Life.py | 21 +++++++++++++++------ instalador/VR4Life_Installer.mzp | Bin 1691 -> 0 bytes instalador/mzp.run | 11 ++++------- instalador/run_installer.ms | 18 ++++++++++++------ instalador/vr4life-install-3dmax.mzp | Bin 0 -> 2123 bytes 5 files changed, 31 insertions(+), 19 deletions(-) delete mode 100644 instalador/VR4Life_Installer.mzp create mode 100644 instalador/vr4life-install-3dmax.mzp diff --git a/instalador/Instalador_Online_VR4Life.py b/instalador/Instalador_Online_VR4Life.py index c981f12..3c6ac2d 100644 --- a/instalador/Instalador_Online_VR4Life.py +++ b/instalador/Instalador_Online_VR4Life.py @@ -5,8 +5,9 @@ from pymxs import runtime as rt # ========================================== # CONFIGURAÇÕES DO GITEA - IMMERSE GAMES # ========================================== -GITEA_RAW_URL = "https://git.immersegame.com/immersegame/vr4life-3dmax-plugin/raw/branch/main/" -GITEA_TOKEN = "efebcde14ce96a2b80d0b3f207991bc155018ab8" +# URL apontando para a pasta 'instalador' +GITEA_RAW_URL = "https://git.immersegame.com/vr4life_public/vr4life-3dmax-plugin/raw/branch/main/" +GITEA_TOKEN = "3831a0da2f87e391f41f4649d48498136a1903c9" # Descobre a pasta segura de Scripts do Usuário do próprio 3ds Max user_scripts_dir = rt.getDir(rt.name("userScripts")) @@ -24,20 +25,27 @@ FILES_TO_DOWNLOAD = [ def install_from_cloud(): rt.clearListener() - print("=== INICIANDO INSTALAÇÃO ONLINE VR4LIFE ===") + print("=== INICIANDO INSTALAÇÃO ONLINE ===") + # 1. Cria a pasta do plugin dentro do 3ds Max se ela não existir if not os.path.exists(PLUGIN_DIR): os.makedirs(PLUGIN_DIR) - + print(f"Pasta de destino criada: {PLUGIN_DIR}") + + # 2. Inicia o download forçando o token na URL try: for file_name in FILES_TO_DOWNLOAD: - remote_url = GITEA_RAW_URL + file_name + # INJEÇÃO DIRETA: O token vai na própria URL para evitar bloqueio do Gitea nas rotas Raw + remote_url = f"{GITEA_RAW_URL}{file_name}?token={GITEA_TOKEN}" local_path = os.path.join(PLUGIN_DIR, file_name).replace("\\", "/") print(f"Baixando: {file_name}...") + req = urllib.request.Request(remote_url) - req.add_header("Authorization", f"token {GITEA_TOKEN}") + # Mantemos o cabeçalho Bearer como redundância de segurança + req.add_header("Authorization", f"Bearer {GITEA_TOKEN}") + # Executa o download e salva no PC response = urllib.request.urlopen(req) remote_code = response.read().decode('utf-8') @@ -46,6 +54,7 @@ def install_from_cloud(): print("Download concluído! Configurando menu do 3ds Max...") + # 3. Executa o instalador local (que ele acabou de baixar) para montar o menu install_script = os.path.join(PLUGIN_DIR, "install_vr4life.py").replace("\\", "/") rt.python.ExecuteFile(install_script) diff --git a/instalador/VR4Life_Installer.mzp b/instalador/VR4Life_Installer.mzp deleted file mode 100644 index f0f79ea518b7fc2d2daa1c9b60e72eecf3f7010f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1691 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