IR
irwinrodriguez.dev
Volver a documentación

Instalación

Los requisitos, la instalación, el árbol que queda y dónde va la licencia.

FoxServer va firmado digitalmente

Desde la 0.9.19, FoxServer.Host.exe, FoxServer.Core.dll, SecurityHelper.dll, foxserver.exe y el instalador llevan firma de editor a nombre de Irwin Alfredo Rodriguez Gimenez, con sello de tiempo. Para verlo: clic derecho sobre el fichero → Propiedades → Firmas digitales, o Get-AuthenticodeSignature en PowerShell, que tiene que decir Valid.

  • SmartScreen: el certificado es nuevo y Windows puede avisar todavía durante un tiempo. Si sale «Windows protegió tu PC», pulsa Más información: tiene que decir Editor: Irwin Alfredo Rodriguez Gimenez. Si lo dice, Ejecutar de todas formas; si dice «Editor desconocido», ese fichero no es el nuestro: no lo ejecutes.

Antes de instalar

El instalador de FoxServer va firmado, pero el certificado es nuevo y Windows puede avisarte todavía la primera vez que lo ejecutes. Esto explica qué vas a ver, cómo seguir y cómo comprobar por tu cuenta que el fichero que has descargado es exactamente el que publicamos.

El aviso de SmartScreen

Si al ejecutarlo sale una ventana azul que dice «Windows protegió tu PC», pulsa «Más información» y mira el editor: tiene que ser Irwin Alfredo Rodriguez Gimenez. El aviso no significa que el fichero tenga nada malo: significa que Windows todavía no ha visto suficientes descargas con este certificado como para reconocerlo.

  1. Pulsa Más información.
  2. Pulsa Ejecutar de todas formas.

Antes de dar ese segundo clic, comprueba el hash: es la manera de saber que lo que vas a ejecutar es lo nuestro y no una copia alterada.

Si tu antivirus lo detiene

Algunos antivirus ponen en cuarentena instaladores poco frecuentes. Si te pasa, añade una exclusión para la carpeta de instalación, C:\Programas\FoxServer, y vuelve a ejecutarlo.

Si el antivirus es de la empresa y no puedes tocar sus reglas, pásale el SHA-256 de abajo a quien la administre: es lo que necesita para dar el fichero por bueno.

Comprueba lo que has descargado

Estos son los datos de la versión vigente y del día en que se publicó. El hash se calcula sobre el fichero tal cual sale del portal:

FicheroVersiónPublicadaTamañoSHA-256
FoxServer-Setup-0.9.38.exe 0.9.38 12 oct 2026 12.1 MB 82AA0B36A4966292716245811B92787C570087BB8192DBFA8705F78346E8BF54

Para comprobarlo, abre PowerShell en la carpeta de descargas y ejecuta:

Calcular el SHA-256 del fichero descargado
Get-FileHash -Algorithm SHA256 "$HOME\Downloads\FoxServer-Setup-0.9.38.exe"

Si el valor que sale coincide con el de la tabla, el fichero es el nuestro y está íntegro. Si no coincide, no lo ejecutes: vuelve a descargarlo y, si sigue sin coincidir, escríbenos a soporte@irwinrodriguez.dev.

Los hashes se vuelven a medir en cada versión publicada. Si has descargado una versión anterior, su hash no tiene por qué coincidir con el de esta tabla.

Requisitos

Dos cosas hay que poner tú, y las dos paran el arranque si faltan: el runtime de .NET 10 en x86 y tu licencia.

  • .NET 10 Runtime, variante x86. FoxServer es de 32 bits, y no es una preferencia: carga el COM de Visual FoxPro, que lo es. El runtime x64 no sirve aunque esté instalado, y si no encuentra el de 32 bits, el instalador te ofrece bajarlo e instalarlo (desde la 0.9.27: unos 28 MB de Microsoft, con su firma comprobada antes de ejecutarlo). Si prefieres hacerlo a mano, la descarga directa es dotnet-runtime-win-x86.exe. Es el «.NET Runtime» normal: no hace falta el de ASP.NET Core ni el de escritorio.
  • Windows 10 o superior, de 32 o de 64 bits.
  • En la máquina donde desarrollas, el IDE de Visual FoxPro 9 SP2: init, controller-add y build lo necesitan. En la máquina donde sirves no hace falta: bastan los runtimes de VFP 9 junto a tu MTDLL.
  • Administrador para instalar y para dar de alta el servicio. Y consola elevada para build: BUILD MTDLL registra la coclase al terminar.

Instalación

  1. Descarga el instalador. FoxServer-Setup-<versión>.exe, desde el detalle de tu licencia en el portal. El nombre lleva la versión, y la que te ofrece el portal es la que te toca según tu mantenimiento.
  2. Ejecútalo como administrador. Hace falta para registrar SecurityHelper.comhost.dll por COM y para dar de alta el servicio de Windows. No escribe ninguna variable de entorno ni toca la ruta del sistema: la CLI y el host se encuentran mirándose los pies, desde la carpeta en la que están.
  3. Elige la carpeta. Por defecto C:\Programas\FoxServer. Hasta la 0.9.34 era C:\Program Files (x86)\FoxServer, y quien actualiza encima sigue en la carpeta que ya tenía. Puedes instalar donde quieras, pero no aplanes el árbol: si config\ deja de estar al lado de bin\, el arranque muere en la puerta de la licencia sin decir que el problema era la estructura.
  4. Deja el alta del servicio marcada. Viene marcada, y en una máquina limpia es lo que quieres. Si la máquina ya tenía el servicio y has instalado en otra carpeta, el alta no lo reemplaza: se corrige con sc config FoxServer binPath= "<nueva>\bin\FoxServer.Host.exe --service".
  5. Copia tu licencia. A config\foxserver.lic, dentro de la carpeta que elegiste. No viaja en el instalador y no puede: un JWT lleva titular y correo, y se emite por cliente.

Modo desatendido

Para desplegarlo con una herramienta de gestión. /LIC es nuestro y copia la licencia a config\; los otros tres son de Inno Setup. En desatendido no se abre ningún diálogo y la comprobación final no se lanza: pásala luego con verify.cmd.

FoxServer-Setup-0.9.38.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART ^
    /LIC="C:\ruta\foxserver.lic"

Lo único que sigue siendo un impedimento en desatendido es que falte el runtime de .NET 10 x86: ahí se para sin preguntar, a propósito, porque un servidor puede no tener salida a internet. Si la tiene, añade /DOTNET=descargar y lo baja e instala él.

Si ya tenías FoxServer instalado

Con el instalador no hay que hacer nada: para el servicio y lo vuelve a arrancar al acabar si estaba en marcha. Si descomprimes el ZIP encima, para el servicio antes (net stop FoxServer): mientras corre tiene abiertos FoxServer.Host.exe y sus DLL, y la copia falla sobre esos ficheros.

La demo (desde la 0.9.28)

El instalador trae una casilla, marcada, que instala una demo y la abre en el navegador al terminar: http://127.0.0.1:8099/, una tienda con datos DBF servida como API REST y como página, con el código VFP que la produce al lado de cada resultado. Funciona sin licencia: sin config\foxserver.lic, FoxServer sirve solo la demo, y solo a esta máquina. Vive en demo\; para apagarla, "active": false en config\servers\foxserver-demo-api.json y foxserver-demo-web.json. En desatendido no se instala, salvo con /DEMO=1.

El árbol, que es parte del contrato

<raiz de la instalacion>\        por defecto C:\Programas\FoxServer\
  bin\          el host. LA RAIZ ES LA CARPETA PADRE DE ESTA
    FoxServer.Host.exe          el servidor
    FoxServer.Core.dll
    SecurityHelper.comhost.dll  se registra con el regsvr32 de 32 bits
    Interop.vfp9.dll
    vfpTemplate.txt             obligatorio si hay algun sitio "web"
    Nexum.dll  Newtonsoft.Json.dll  System.Management.dll  ...
  config\       foxserver.lic + servers\*.json (un manifiesto por servidor)
  logs\         FoxServer_<fecha>.log, uno por dia, partido a 10 MB
  cli\          foxserver.exe: crear y compilar proyectos sin abrir el IDE
  ide\          FoxForge.APP + providers\web\: el taller, dentro del IDE de VFP
  ejemplos\     los ejemplos de la guia, ejecutables
  tools\        requisitos, inventario y verificacion
  foxforge.cmd  abre FoxForge en el IDE de VFP 9
  install.cmd   comprueba, inventaria y verifica de verdad
  verify.cmd    la verificacion sola

La licencia

Se descarga del portal, en el detalle de la licencia. El correo que recibes avisa de que ya está: no lleva el fichero adjunto. Se copia a config\foxserver.lic, dentro de la carpeta donde instalaste. El servidor la busca junto al bin\ del que arranca. Sin ella el host arranca y se para en la puerta: no sirve nada.

Mira de qué tipo es tu licencia Una licencia Developer rechaza con 403 toda petición que no venga de 127.0.0.1. Si vas a llamar desde otra máquina de la red, necesitas una Runtime. Es el malentendido número uno: parece un problema de permisos y es la licencia. Los detalles están en Licencias.

Comprobar que funciona

Lo más completo es install.cmd, que comprueba los requisitos, hace inventario de lo declarado y verifica de verdad: levanta el servidor, le hace una petición HTTP y lo apaga, parando en el primer falló. A mano:

cd "C:\Programas\FoxServer\bin"
FoxServer.Host.exe

Tiene que salir algo así:

2026-09-20 09:15:02.114 INFO  FoxServer 0.9.38, console mode
2026-09-20 09:15:02.201 INFO  VFP pool: 2 STA threads, timeout 120 s, queue 16, admission slots 50 (defaults)
2026-09-20 09:15:02.203 INFO  License: Runtime, Tu Empresa, S.L., 1 seat(s), maintenance until 2027-01-15 (active)
2026-09-20 09:15:02.350 INFO  salesapi: docs at GET /openapi.json and GET /docs
2026-09-20 09:15:02.402 INFO  salesapi [api] listening on http://127.0.0.1:8099/
2026-09-20 09:15:41.870 INFO  GET /api/customers 200 26 ms  salesapi  127.0.0.1

Si algo va mal

Lo que vesQué esQué hacer
El instalador se para nombrando .NETFalta el runtime de .NET 10 de 32 bits y no se aceptó bajarlo (o se instaló en desatendido). El x64 no cuentaVuelve a lanzarlo y acepta la descarga, o instala el runtime x86 a mano
403 desde otra máquina, y desde la misma funcionaLa licencia es DeveloperPara servir a otras máquinas hace falta una licencia Runtime
El host arranca y no sirve nada (o solo la demo)Falta config\foxserver.lic, o el árbol se aplanó y config\ no está junto a bin\Copia la licencia a config\ y deja el árbol como salió del ZIP
500 en un sitio de tipo webFalta bin\vfpTemplate.txtReinstala o recupera ese fichero: es obligatorio en cuanto hay un sitio web
«No servers could be started»Ningún manifiesto de config\servers\ pudo levantarse: DLL que no está, puerto ocupado o ruta malMira logs\FoxServer_<fecha>.log: dice cuál y por qué
/docs sale en blancoSwagger carga su interfaz de un CDN y la máquina no tiene internetNo es un fallo del servidor; el /openapi.json sigue funcionando
El puerto está ocupadoOtro servicio lo tiene tomadoCambia port en el manifiesto del servidor, en config\servers\

Siguiente: Primeros pasos →