Monthly Archives: febrero 2018

Profesor TIC: aplicaciones «legacy» – el comedor

La semana pasada me estuve peleando con otra de esas situaciones «interesantes» con las que tengo que lidiar por ser el «TIC» del colegio: hacer funcionar una aplicación «legacy» en un ordenador nuevo.

Como suele ocurrir en muchos colegios, uno de los pilares del nuestro es nuestra recepcionista, y por eso, que esté contenta en su trabajo es muy importante  😉 El tema es que llevaba ya casi seis meses pidiéndome que le cambiase de ordenador, porque, efectivamente, le iba muy lento, pero era una tarea que me aterraba. ¿El motivo? Es la persona que gestiona el comedor, y el comedor del colegio se gestiona con una aplicación «legacy», es decir, muuuuyyyy antigua, hecha hace unos 20 años en FoxPro. Es de esas cosas que lo que mejor que puedes hacer es no tocarlas mientras funcionen, porque la gestión de nuestro comedor es bastante peculiar (muchas opciones de pago diferentes según los días que te quedes, casuísticas varias de devoluciones y descuentos, etc.), y no hay ningún paquete comercial que se adapte, por lo que cualquier cambio requiere un desarrollo a medida.

Hace ya unos 7 años le cambié de ordenador, un equipo antiguo con XP, y conseguí hacerlo funcionar en Windows 7 de 32 bits gracias a que encontré una versión tuneada de FOX por 25€ (foxbase: http://www.foxbase.nl/) que permitía ejecutar programas de FOX en Windows 7. Además de eso, tuve que hacer un pequeño script para redirigir la impresora al fichero lpt1: (un net use lpt1: \\impresora_de_red_compartida) justo antes de lanzar el FOX.

Pero sabía que, el siguiente cambio, o iba a ir con Windows 10 o con un Windows 7 de 64 bits, y el escenario me daba bastante miedo, ya que tampoco tengo mucho tiempo para andar investigando qué hacer si un tema de estos falla.

Al final el cambio tuvo que hacerse la semana pasada, después de una llamada pidiendo, por favor, que hiciese algo, ya que el ordenador le tardó 20 minutos en abrir un triste Word con una imagen que le habían encargado imprimir en color desde infantil. Evidentemente, la situación no era sostenible, y me tuve que poner manos a la obra… tenía ya un ordenador «recauchutado» medio preparado para el cambio (un equipo sencillo pero más que suficiente, de estos que vienen de saldos porque han estado en renting), restaurado de fábrica y con un Windows 7 de 64 bits… hice la configuración inicial, navegadores, Office, lector de PDFs… y al probar a lanzar el script que tenía preparado para el FOX en su ordenador actual… «ERROOOOOR!!!!». Ese programa era incompatible con versiones de Windows de 64 bits. Fantástico, casi me pego un tiro. No quedaba otra que empezar a bucear por la web…

Encontré en foros gente intentando hacer lo mismo que yo. Las soluciones generalmente pasaban por recompilar la aplicación en una versión actualizada de Visual FoxPro, pero no tenía ninguna intención de piratear o comprar ningún entorno de desarrollo para hacerlo. En una web encontré una solución un tanto rebuscada, pero que algunas personas decían que les servía: instalar una versión tuneada de dosbox (un emulador de x86 con MS-DOS) con soporte de impresión, carpetas de red… (en concreto, ésta, enlazada desde la web oficial de dosbox: http://ykhwong.x-y.net/).

Tras un poquillo de investigación, encontré que ajustando un par de opciones de configuración relativas la impresión con dosbox y con un .bat para lanzarlo igual había suerte. En concreto, en la sección «parallel» de la configuración, establecí:

parallel1=file dev:lpt1

De ese modo, cualquier intento de imprimir desde dosbox en el puerto paralelo 1 se redirigirá al fichero dev:lpt1.

Si al lanzar dosbox lo hacemos en un .bat que contenga las líneas:

net use lpt1: /delete
net use lpt1: "\\servidor\impresora_en_red" /PERSISTENT:YES
KB16 SP,850,C:\Windows\System32\KEYBOARD.SYS

Estaremos estableciendo que la impresora enlazada en lpt1 es la impresora en la que queremos imprimir los listados desde nuestro programa en FOX, y aprovechamos para forzar a que el teclado del subsistema MS-DOS esté en castellano.

Por política de dominio, los usuarios autorizados a usar el programa del comedor tienen una unidad de red «w» con el programa. Así que para terminar el script, si queremos que dosbox, automáticamente, monte la unidad de red para poder utilizarla, y lance el FOX, podemos usar la siguiente línea:

"c:\Program Files (x86)\DOSBox SVN-Daum\dosbox_x64.exe" -c "mount w w:\\" -c "w:" -c "comedorm.bat" 

El script «comedorm.bat» es un .bat que símplemente hace un cd a la carpeta del FOX y lo lanza. La magia se obró, y el programa de comedor funcionó  😉

Pues bueno, ya veis qué cosas más interesantes hago en mi trabajo de profesor cuando no soy profesor. Tengo que reconocer que bajar al barrillo de vez en cuando y ensuciarme las manos con estas cosillas me da vidilla… en el fondo me gusta  😉

Bonus: si además tienes algunos documentos de Word enlazados a la base de datos de FOX para generar documentos combinados, y usas la última versión de Office 2016, tienes que instalar el Access Database Engine para Access 2010, porque es la última versión con conectores ODBC para FoxBase (la descarga es gratuita desde https://www.microsoft.com/es-es/download/details.aspx?id=13255).