"Después del juego es antes del juego"
Sepp Herberger

domingo, 19 de febrero de 2017

Flash y libros digitales de las editoriales

Bueno, mis problemas con Flash han sido debido a los libros digitales que mandan las editoriales, en este caso de la editorial Oxford. Muchas editoriales siguen viviendo de las rentas con contenidos hechos en Flash, como si no se hubiesen enterado de que:


Lo malo del problema no es solo que dependan de una tecnología viejuna cada vez peor soportada como Flash, que lleva el camino de Java. Lo realmente malo es que dependan de una versión concreta del plugin, de tal forma que las nuevas actualizaciones (muchas de ellas de seguridad) del mismo hagan fallar el libro digital y para hacerlo funcionar nos obligue a tener en el sistema un Flash obsoleto.

Mi problema era con el libro "Oxford University Press/Key to Bachillerato iPack": necesita el Flash 11.2.202.394, cuando ahora vamos por la versión 24. Al abrir el libro directamente se quejaba de que no estaba instalado su Flash e invitaba a ponerlo ofreciendo un enlace. Descargar la versión de 32 o 64 bits es sencillo desde este enlace.

Claro que si lo descargamos, cogemos el libflashplayer.so de dentro y lo ponemos en la ruta /usr/lib/mozilla/plugins no habrá problemas: quedamos todo el sistema con un Flash antiguo, pero el Oxford iPack funcionará. Cuando haya alguna actualización no controlada del plugin habrá que volver a meter nuestro libflashplayer.so viejuno y así iremos tirando, pero tendremos páginas web modernas que no se vean o fallen con el Flash antiguo y las consiguientes quejas de los usuarios.

Esto no me satisfacía, así que me puse a investigar. Primeramente, me doy cuenta de que la aplicación de Oxford usa la tecnología de Mozilla llamada XUL, que se usaba para construir plugins para el navegador y, esta faceta no es muy conocida, para crear aplicaciones que son de escritorio pero internamente se basan en tecnologías Web, usando HTML, plugins, DOM, Javascript y una serie de ficheros XML. La idea es correr una aplicación web sin usar el navegador, como aplicación de escritorio.

Bueno, pues me dije: si Oxford iPack usa XULRunner (y efectivamente, en sus directorios se encuentra un libxul.so privado), internamente se basa en Mozilla-Firefox y por tanto buscará los plugins en la misma secuencia en que los busca el navegador. Esto es:
  • Directorio indicado por la variable de entorno MOZ_PLUGIN_PATH.
  • Directorio ~/.mozilla/plugins.
  • /usr/lib/mozilla/plugins, o quizá /usr/lib64/mozilla/plugins.
  • [Directorio de Perfil]/plugins, siendo normalmente el directorio de perfil ~/.mozilla/firefox/xxxx.default/.
Entonces, si antes de abrir la aplicación de Oxford hago que MOZ_PLUGIN_PATH apunte a un directorio donde está el libflashplayer.so que necesita para funcionar, esto no interferirá con el plugin instalado a nivel de sistema en /usr/lib/mozilla/plugins. Pues ciertamente es así, mi aplicación de Oxford se abría con esta ruta:
$ /home/compartido/Ingles/Oxford\ University\ Press/Key\ to\ Bachillerato\ iPack\ 1/linux/oup
siendo el ejecutable "oup" el que lanza la aplicacion XUL. Si antes de ejecutarla hago:
$ cp libflasplayer.so /home/compartido/Ingles/Oxford\ University\ Press/Key\ to\ Bachillerato\ iPack\ 1/linux/
$ export MOZ_PLUGIN_PATH=/home/compartido/Ingles/Oxford\ University\ Press/Key\ to\ Bachillerato\ iPack\ 1/linux/
$ /home/compartido/Ingles/Oxford\ University\ Press/Key\ to\ Bachillerato\ iPack\ 1/linux/oup
Ahora la aplicacion de Oxford usará la versión de libflashplayer.so que hemos metido previamente en el mismo directorio (será la 11.2, claro) y dejará tranquila la versión que hay en /urs/lib/mozilla/plugins, que seguirá siendo la 24.

Para hacer esto transparente al usuario simplemente hay que crear un script con las 2 últimas líneas y desde el fichero .desktop del escritorio que lanza el programa invocar a ese script en lugar de a "oup" directamente, modificando su línea "Exec=".

Et voilá, ya tenemos para aguantar una temporada más a Oxford y sus Flash obsoletos.

Nota: es importante que el libflashplayer.so que pongamos coincida en arquitectura con el ejecutable oup que usemos. Ambos deben ser de 32 bits o de 64 bits, no se pueden mezclar. Para saber de que arquitectura son usamos el comando "file *archivo*".


Otro problema que me relatan mis compañeros también con Oxford es que hay además libros que si aceptan el Flash 24, pero cuando van a reproducir los vídeos se queda la ventana en blanco. Parece ser que es un problema de permisos de Flash al acceder a directorios locales y se soluciona:
  • Buscando en un navegador "panel de control Adobe Flash" y pinchando el primer resultado. Nos llevará seguramente a esta página.
  • Pinchamos en "Parámetros de seguridad global".
  • Marcamos "Permitir siempre".
  • Pinchamos en Editar--> Agregar--> buscar carpeta. Le damos la ruta donde esta instalado el iPack y marcamos la carpeta "Oxford University Press" (En mi caso la ruta es "/home/compartido/Ingles/Oxford\ University\ Press").
  • Aceptamos y probamos.
Bueno, creo que con esto se resuelve la casuística que nos ha aparecido. Seguiremos informando.

2 comentarios:

  1. Muy bueno!
    Estoy haciendo lo mismo, pero lanzando firefox tras exportar la variable. Y me encuentro que se carga la versión de Flash de ambos sitios, por lo que al final es cómo si sólo estuviera la versión 24.

    ResponderEliminar
    Respuestas
    1. Hola, Nando. Suena a un bug de firefox, ya que no tien e mucho sentido que coja ambas versiones y se quede con la mayor. Desde luego los libros con xulrunner no tienen ese comportamiento.

      ¿Con about:plugins te salen ambos plugin de flash?

      ¿Has probado a meter un libflashplayer.so versión 11 en el directorio ~/.mozilla/plugins del usuario y ver si tiene prioridad sobre el de /usr/lib/...?

      Eliminar