Si has descargado el instalador de Lúa para Windows, es muy probable que el sistema te haya mostrado una ventana azul con el aviso «Windows protegió su PC» y, después, un mensaje del control de cuentas con «Editor: desconocido». Asusta un poco, y es normal preguntarse si el programa es peligroso. No lo es, pero tampoco te pedimos que nos creas sin más: en este artículo explicamos por qué aparece ese aviso y, sobre todo, cómo puedes compilar Lúa tú mismo a partir del código fuente, para que el programa que ejecutas salga de tu propio equipo.

Por qué Windows dice que el programa no es de confianza
El aviso viene de Microsoft Defender SmartScreen, un filtro que revisa los programas descargados de Internet antes de ejecutarlos. SmartScreen se fija sobre todo en dos cosas:
- Si el programa lleva firma digital. Un programador o una empresa puede «firmar» su ejecutable con un certificado de firma de código (Authenticode). Ese certificado no lo puede fabricar cualquiera: lo emite una autoridad de certificación que Microsoft reconoce (o el propio servicio de firma de Microsoft) después de comprobar la identidad de quien lo solicita. Cuando el archivo está firmado, Windows puede mostrar el nombre del editor en lugar de «desconocido».
- La reputación. SmartScreen lleva la cuenta de cuántas personas han descargado y ejecutado ese mismo archivo sin problemas. Un programa nuevo, o una versión recién publicada, todavía no tiene esa reputación.
El instalador de Lúa no está firmado, y cada versión nueva es un archivo distinto que nadie ha ejecutado antes. Por eso Windows lo trata como «desconocido». El aviso no significa que se haya detectado ningún virus: significa solo que Windows no sabe quién lo hizo.
Por qué Lúa no está firmada
Piztu es un proyecto educativo y libre, sin ánimo de lucro. Un certificado de firma de código cuesta cientos de euros cada año, exige validar una entidad jurídica y, desde 2023, la clave privada tiene que guardarse en un dispositivo físico especial (un token o un servicio en la nube). Y ni siquiera eso elimina el aviso de inmediato: un programa firmado pero nuevo también puede recibir avisos hasta que acumula reputación.
Además, conviene recordar que la firma dice quién hizo un programa, no lo que hace. Un programa firmado puede ser malicioso, y uno sin firmar puede ser perfectamente seguro. En el software libre hay una garantía distinta y más fuerte: el código está a la vista. Cualquier persona puede leerlo, revisarlo y compilarlo.
Si prefieres usar el instalador descargado
En la ventana de SmartScreen pulsa «Más información» y después «Ejecutar de todas formas». Antes, si quieres, comprueba que el archivo es el publicado: en la página de Releases cada archivo va acompañado de otro terminado en .sha256. En PowerShell, Get-FileHash .\nombre-del-archivo.exe calcula su huella; tiene que coincidir con la del .sha256.
La alternativa: compilar Lúa tú mismo
Si compilas el programa en tu equipo, sabes exactamente de qué código ha salido. Y hay un efecto secundario cómodo: SmartScreen solo revisa los archivos que llegan desde Internet (el navegador los marca como descargados), así que el lua.exe que generas tú no muestra ese aviso.
No hace falta saber programar. Solo hay que copiar unas órdenes en una consola. Necesitas:
- Windows 10 u 11 de 64 bits, con winget (ya viene instalado; si no, instala «Instalador de aplicación» desde la Microsoft Store).
- Conexión a Internet y unos 3 GB libres.
- Entre 15 y 30 minutos la primera vez, porque se descargan muchas piezas. Las siguientes compilaciones son mucho más rápidas.
Paso 1. Abrir PowerShell
Pulsa la tecla Windows, escribe PowerShell y ábrelo. No hace falta abrirlo como administrador: winget pedirá permiso cuando lo necesite.
Paso 2. Instalar las herramientas de compilación
Lúa está escrita en Go, la interfaz en JavaScript y usa la biblioteca Wails para crear la ventana. Instala Git (para descargar el código), Go, Node.js y Task (que encadena los pasos de la compilación). Copia estas cuatro líneas, una a una:
winget install --id Git.Git -e winget install --id GoLang.Go -e winget install --id OpenJS.NodeJS.LTS -e winget install --id Task.Task -e
Cierra PowerShell y vuelve a abrirlo, para que reconozca los programas nuevos. Comprueba que todo está en su sitio:
git --version go version node -v task --version
Go tiene que ser la versión 1.25 o posterior, y Node la 20 o posterior.
Paso 3. Instalar Wails
Wails se instala con el propio Go. Usamos la misma versión que indica el código de Lúa (en el archivo go.mod):
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-beta.14
Comprueba que funciona con wails3 version. Si PowerShell responde que no reconoce wails3, cierra y abre de nuevo la consola: el instalador de Go añade la carpeta %USERPROFILE%\go\bin al PATH, pero solo las consolas nuevas la ven.
Paso 4. Descargar el código desde GitHub
Ve a tu carpeta personal y clona el repositorio de Lúa:
cd $HOME git clone https://github.com/piztusistemas/lua.git cd lua
Esto descarga la última versión en desarrollo. Si prefieres compilar exactamente una versión publicada, cambia a ella por su etiqueta (por ejemplo, la 26.10.9):
git tag git checkout 26.10.9
Ahora tienes todo el código en la carpeta lua, y puedes abrirlo y revisarlo cuando quieras. Lo más importante:
lua\lua: la aplicación.lua\lua_installer: el instalador, con el scriptbuild-windows.ps1que usaremos en el paso 6. Es corto y está comentado: merece la pena leerlo antes de ejecutarlo.edicion: el motor común (plantillas, LaTeX, Word y OpenDocument).
Paso 5. Compilar Lúa
cd lua\lua task build
La primera vez tarda unos minutos: Go descarga sus bibliotecas, npm descarga las de la interfaz, se genera la interfaz y por último se compila el programa. Si todo va bien, el resultado está en:
lua\lua\build\bin\lua.exe
Puedes abrirlo ya con .\build\bin\lua.exe (o con task run). Este ejecutable funciona suelto, pero para generar PDF Lúa necesita una distribución de LaTeX; en el siguiente paso el instalador se encarga de ella.
Paso 6 (recomendado). Compilar el instalador
El instalador coge el lua.exe, lo copia a C:\Program Files\Piztu\Lua, crea los accesos directos e instala con winget lo que Lúa necesita para los documentos: MiKTeX (LaTeX) y Pandoc. Para compilarlo:
cd $HOME\lua\lua\lua_installer powershell -ExecutionPolicy Bypass -File .\build-windows.ps1
Windows no deja ejecutar scripts de PowerShell por defecto; la opción -ExecutionPolicy Bypass lo permite solo para esta orden, sin cambiar la configuración del equipo. El script comprueba que tienes las herramientas, compila Lúa de nuevo, lo mete dentro del instalador y compila el instalador. Al terminar indica:
✅ Compilado: lua_installer\build\bin\lua-installer.exe
Ejecuta ese archivo con doble clic. Windows pedirá permiso de administrador (el instalador tiene que escribir en Program Files). La ventana del control de cuentas seguirá diciendo «Editor: desconocido», porque el ejecutable sigue sin firma, pero ahora eres tú quien lo ha compilado.
Paso 7 (opcional). Pasar las pruebas
Lúa tiene cientos de pruebas automáticas. Si quieres comprobar que tu compilación se comporta como debe:
cd $HOME\lua\lua\lua go test ./...
Tarda un par de minutos. Las pruebas que necesitan LaTeX, LibreOffice o Maxima se saltan solas si esos programas no están instalados.
Actualizar a una versión nueva
Cuando publiquemos una versión nueva, no hace falta repetirlo todo. Abre PowerShell y:
cd $HOME\lua git checkout main git pull cd lua\lua_installer powershell -ExecutionPolicy Bypass -File .\build-windows.ps1
Si algo falla
- «task» (o «go», «git», «wails3») no se reconoce como nombre de un cmdlet: cierra y abre de nuevo PowerShell después de instalar. Si persiste, reinicia la sesión de Windows.
- Error al compilar la interfaz (npm): comprueba con
node -vque tienes Node 20 o posterior. - El instalador instala una versión vieja: usa siempre
build-windows.ps1y notask builddentro delua_installer, porque el script es el que mete el Lúa recién compilado dentro del instalador.
Si tienes dudas, el código, la documentación técnica (carpeta 02-DOCS) y el historial de cambios están en github.com/piztusistemas/lua. Esa transparencia es, en realidad, la mejor firma que puede tener un programa.