diff --git a/instalador/vr4life-install-3dmax.mzp b/instalador/vr4life-install-3dmax.mzp index 3330e1c..988446a 100644 Binary files a/instalador/vr4life-install-3dmax.mzp and b/instalador/vr4life-install-3dmax.mzp differ diff --git a/instalador/vr4life.mnx b/instalador/vr4life.mnx new file mode 100644 index 0000000..98bb037 --- /dev/null +++ b/instalador/vr4life.mnx @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/install_vr4life.py b/install_vr4life.py index 3be155e..14d152c 100644 --- a/install_vr4life.py +++ b/install_vr4life.py @@ -4,48 +4,50 @@ import pymxs def instalar_menu_vr4life(): try: - # 1. Pega o nome exato do arquivo que você gerou no 3ds Max - # (Altere aqui se você salvou com outro nome) - nome_arquivo_mnx = "VR4Life.mnx" + nome_arquivo_mnx = "vr4life.mnx" - # 2. Descobre a pasta atual onde este instalador Python está rodando - diretorio_atual = os.path.dirname(os.path.realpath(__file__)) - caminho_origem_mnx = os.path.join(diretorio_atual, nome_arquivo_mnx) + # A GRANDE MUDANÇA: Em vez de __file__, vamos direto na pasta + # temporária onde o mzp.run extraiu os arquivos! + pasta_temp_windows = os.environ.get('TEMP') + pasta_extracao_mzp = os.path.join(pasta_temp_windows, "VR4Life_Install") + + caminho_origem_mnx = os.path.join(pasta_extracao_mzp, nome_arquivo_mnx) - # Trava de segurança: verifica se você não esqueceu de colocar o .mnx junto + # Verifica se achou no temp if not os.path.exists(caminho_origem_mnx): pymxs.runtime.messageBox( - f"Erro na instalação: O arquivo '{nome_arquivo_mnx}' não foi encontrado na pasta.", + f"Erro: O arquivo '{nome_arquivo_mnx}' não foi encontrado na pasta de extração:\n{caminho_origem_mnx}\n\nVerifique se o arquivo está dentro do .mzp com o nome exato (em minúsculo).", title="VR4Life - Erro" ) return False - # 3. Magia do pymxs: Pergunta ao 3ds Max onde fica a pasta UI daquele usuário - # Geralmente é C:\Users\[Nome]\AppData\Local\Autodesk\3dsMax\2026 - 64bit\ENU\en-US\UI\ - pasta_ui_usuario = pymxs.runtime.pathConfig.getDir(pymxs.runtime.name("userUI")) + # Acha a pasta de interface do usuário do 3ds Max + pasta_macros = pymxs.runtime.pathConfig.getDir(pymxs.runtime.name("userMacros")) + pasta_enu = os.path.dirname(pasta_macros) + pasta_ui_usuario = os.path.join(pasta_enu, "en-US", "UI") + + if not os.path.exists(pasta_ui_usuario): + os.makedirs(pasta_ui_usuario) + caminho_destino_mnx = os.path.join(pasta_ui_usuario, nome_arquivo_mnx) - # 4. Copia o arquivo .mnx silenciosamente para a máquina do cliente + # Faz a cópia shutil.copy2(caminho_origem_mnx, caminho_destino_mnx) - # 5. Avisa no console interno do 3ds Max que deu certo (ótimo para debug) - pymxs.runtime.print_(f"VR4Life: Arquivo de menu copiado com sucesso para {pasta_ui_usuario}\n") + pymxs.runtime.print_(f"VR4Life: Menu copiado com sucesso para {pasta_ui_usuario}\n") - # 6. Alerta final de sucesso na tela para a sua equipe pymxs.runtime.messageBox( "O menu do VR4Life foi instalado com sucesso!\n\nSe ele não aparecer imediatamente no topo, reinicie o 3ds Max.", - title="VR4Life - Instalação Concluída" + title="VR4Life - Sucesso!" ) return True except Exception as e: - # Captura qualquer erro (falta de permissão no Windows, etc.) pymxs.runtime.messageBox( f"Falha ao instalar o menu.\nErro técnico: {str(e)}", title="VR4Life - Erro Fatal" ) return False -# Dispara a função quando o script for rodado no 3ds Max if __name__ == '__main__': instalar_menu_vr4life() \ No newline at end of file