' AR-House Launcher - modo bajo consumo ' Doble-click para iniciar Ollama + Streamlit y abrir el navegador ' ' NOTA: strings sin acentos para evitar problemas de encoding con wscript.exe. ' Los acentos en cadenas funcionan mal si el archivo no esta en ANSI/UTF-16. Option Explicit Dim shell, fso, projectPath, ollamaPath, browserURL Dim WshShell, retries, ollamaReady Set shell = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Set WshShell = CreateObject("WScript.Shell") projectPath = "D:\Proyectos Software\AR-House" browserURL = "http://localhost:8501" ' Paso 1: verificar que Ollama existe On Error Resume Next shell.Run "ollama --version", 0, True If Err.Number <> 0 Then MsgBox "Ollama no esta instalado o no esta en el PATH." & vbCrLf & _ "Instalalo desde ollama.com primero.", vbCritical, "AR-House" WScript.Quit End If On Error Goto 0 ' Paso 2: matar Ollama si esta corriendo (reset limpio) shell.Run "taskkill /F /IM ollama.exe /T", 0, True WScript.Sleep 1500 ' Paso 3: lanzar Ollama con env vars de bajo consumo Dim ollamaCmd ollamaCmd = "cmd /c set OLLAMA_MAX_LOADED_MODELS=1 && " & _ "set OLLAMA_NUM_PARALLEL=1 && " & _ "set OLLAMA_KEEP_ALIVE=0 && " & _ "ollama serve" shell.Run ollamaCmd, 0, False ' Paso 4: esperar a que Ollama responda (max 15 segundos) retries = 0 ollamaReady = False Do While retries < 15 And Not ollamaReady WScript.Sleep 1000 On Error Resume Next Dim xmlhttp Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.Open "GET", "http://localhost:11434/api/tags", False xmlhttp.Send If xmlhttp.Status = 200 Then ollamaReady = True On Error Goto 0 retries = retries + 1 Loop If Not ollamaReady Then MsgBox "Ollama no respondio despues de 15 segundos. Verifica manualmente.", _ vbExclamation, "AR-House" WScript.Quit End If ' Paso 5: lanzar Streamlit con virtualenv Dim streamlitCmd streamlitCmd = "cmd /c cd /d """ & projectPath & """ && " & _ ".venv\Scripts\activate && " & _ "streamlit run app.py --server.headless true" shell.Run streamlitCmd, 0, False ' Paso 6: esperar a que Streamlit arranque WScript.Sleep 8000 ' Paso 7: abrir navegador (preferir pestana nueva, no ventana nueva) ' ' Usamos "cmd /c start" en lugar de shell.Run directo sobre la URL. ' "start" delega al handler default de URL del sistema, lo que en browsers ' modernos (Chrome, Edge, Firefox) suele abrir una pestana nueva si el ' browser ya esta corriendo (en lugar de ventana nueva). ' ' Si el browser NO esta corriendo, igual se abre como ventana nueva ' (es el primer launch). Esto es comportamiento de Windows, no del VBS. shell.Run "cmd /c start " & Chr(34) & Chr(34) & " " & Chr(34) & browserURL & Chr(34), 0, False ' Paso 8: notificacion al usuario (popup discreto, se cierra solo en 3s) WshShell.Popup "AR-House esta listo en tu navegador." & vbCrLf & _ "Para cerrar todo: doble-click en AR-House-Stop.vbs", _ 3, "AR-House", vbInformation