import os from pymxs import runtime as rt def install_vr4life_final(): try: # 1. PEGAR CAMINHOS plugin_dir = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/") run_script = f"{plugin_dir}/run_vr4life.py" update_script = f"{plugin_dir}/vr4life_updater.py" # 2. REGISTRAR AS MACROS (Isso não depende da UI, então funciona direto) # Usamos 647394 como ID fixo para bater com seu arquivo .mnx macro_cmd = f""" macroScript VR4Life_Launcher category:"Immerse Games" internalId:647394 tooltip:"Abrir VR4Life" ( on execute do python.executeFile "{run_script}" ) macroScript VR4Life_Update category:"Immerse Games" internalId:647394 tooltip:"Atualizar VR4Life" ( on execute do python.executeFile "{update_script}" ) """ rt.execute(macro_cmd) # 3. O "ESPERADOR" (TIMER) - Resolve o erro de 'undefined' # Ele vai tentar 10 vezes, a cada 1 segundo, até o menuMan aparecer setup_ui_ms = """ ( global _vr_timer = dotNetObject "System.Windows.Forms.Timer" _vr_timer.interval = 1000 global _vr_tries = 0 dotNet.addEventHandler _vr_timer "Tick" (fn onTick s e = ( _vr_tries += 1 if menuMan != undefined and menuMan.getMainMenuBar() != undefined then ( -- Se o menuMan acordou, a gente mata o erro 'undefined' aqui local mainBar = menuMan.getMainMenuBar() local existing = menuMan.findMenu "VR4Life" if existing != undefined do menuMan.unRegisterMenu existing local vMenu = menuMan.createMenu "VR4Life" local item1 = menuMan.createActionItem "VR4Life_Launcher" "Immerse Games" local item2 = menuMan.createActionItem "VR4Life_Update" "Immerse Games" vMenu.addItem item1 -1 vMenu.addItem item2 -1 local subM = menuMan.createSubMenuItem "VR4Life" vMenu mainBar.addItem subM (mainBar.numItems()) menuMan.updateMenuBar() s.stop() s.dispose() format ">> VR4Life: Interface carregada com sucesso!\\n" ) else if _vr_tries > 10 do ( s.stop() s.dispose() format ">> VR4Life Erro: Timeout aguardando interface.\\n" ) )) _vr_timer.start() ) """ rt.execute(setup_ui_ms) print(">> VR4Life: Scripts registrados. Aguardando interface aparecer...") return True except Exception as e: print(f"Erro na instalacao: {str(e)}") return False if __name__ == "__main__": install_vr4life_final()