henrique 2 months ago
parent c81edc3a12
commit 9c88be9560

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<MaxMenuTransformations>
<CreateTopLevelMenu Id="167d260c-f391-4e63-b6a9-4798fbfcadc5" Title="Vr4Life"/>
<CreateMenuAction MenuId="167d260c-f391-4e63-b6a9-4798fbfcadc5" Id="a37d867e-3d05-4859-9a55-70cd394c8e72" ActionId="647394-VR4Life_Launcher`Immerse Games"/>
<CreateMenuAction MenuId="167d260c-f391-4e63-b6a9-4798fbfcadc5" Id="8df661bf-5425-4fbf-9ee3-ac14cd067b0c" ActionId="647394-VR4Life_Launcher`Immerse Games"/>
<DeleteItem Id="8df661bf-5425-4fbf-9ee3-ac14cd067b0c"/>
<DeleteItem Id="a37d867e-3d05-4859-9a55-70cd394c8e72"/>
<CreateMenuAction MenuId="167d260c-f391-4e63-b6a9-4798fbfcadc5" Id="d66e56ef-ecf4-4758-923e-b7ce929e440c" ActionId="647394-VR4Life_Launcher`Immerse Games"/>
<CreateMenuAction MenuId="167d260c-f391-4e63-b6a9-4798fbfcadc5" Id="071a64d3-3fe9-4674-b58a-b5e3047e3109" ActionId="647394-VR4Life_Update`Immerse Games"/>
</MaxMenuTransformations>

@ -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")
# Trava de segurança: verifica se você não esqueceu de colocar o .mnx junto
caminho_origem_mnx = os.path.join(pasta_extracao_mzp, nome_arquivo_mnx)
# 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()
Loading…
Cancel
Save