21 julio 2009

Solucionar error about:newtab de Megaupload Toolbar en Firefox

Como ya conté en el post anterior, la barra de megaupload trae un par de problemas en firefox. Uno de estos conlleva a que no podamos quitar el molesto "about:newtab" que se carga en la barra de dirección cada vez que abrimos una nueva pestaña en blanco.

Lo que hace el complemento de la barra de megaupload de firefox es definir la uri de las pestañas nuevas y una página template que es la que se carga, en este caso la uri es "about:newtab". Así lo que veremos será algo similar a la siguiente imagen.


Mega Toolbar instalada en el browser Mozilla Firefox

Si deseamos volver a la normalidad lo que hay que hacer es marcar el checkbox que se señala en la imagen anterior y cerrar la ventana mediante el botón Close que vemos ahí mismo.
Pero aquí nos salta una ventana donde dice
ReferenceError: DTFox is not defined

como también se puede ver en la siguiente imagen.


Mega Toolbar instalada en el browser Mozilla Firefox

Esto es producto de un error para el cual presentaré un par de soluciones.

La primera solución es pasarlo por alto.
Lo que haremos no es arreglar el problema sino saltearlo y desactivar directamente esta funcionalidad que nos agregó la barra de megaupload.
Para esto debemos modifcar una variable de configuración. Por esto lo primero es poner en la barra de dirección "about:config", lo cual al intentar acceder nos mostrará la siguiente advertencia


Mega Toolbar instalada en el browser Mozilla Firefox

Lo que dice es cierto y, como debe ser, prometeremos tener cuidado.

Hecha la promesa, debermos buscar la variable "megaupload.toolbar.ntObserve" la cual tiene valor 'true' incialmente. Para la búsqueda recomiendo tipear el nombre de la variable tal cual en la barra de filtro como se ve en la siguiente imagen.


Mega Toolbar instalada en el browser Mozilla Firefox

En esta imagen también se ve como modificarla haciendo click derecho sobre la variable. Otra forma es haciendo doble click sobre esta.
Indistintamente de cómo se haga para modificarla, lo importante es que ésta tome el valor 'false', dejando demas atributos incambiados, como vemos a continuación.


Mega Toolbar instalada en el browser Mozilla Firefox

Con esto habremos terminado todos los pasos de esta solución.


La segunda solución es más técnica e implica meterse en el código del complemento pero tampoco es nada de otro mundo.

Lo que debermos hacer es modificar una llamada (invocación) a un método javascript, para lo cual primero que nada ubicaremos el complemento Megaupload Toolbar de Firefox y luego, dentro de éste, el archivo donde se encuentra dicha llamada.

Repitiendo un poco las palabras del anterior post que mencione más arriba, explicaré cómo ubicar el complemento de firefox.

En un mismo equipo, cada usuario puede gestionar su preferencias de firefox independientemente de las preferencias de los demás usuarios, en lo que también se incluyen los complementos.
La información de las preferencias y complementos se almacenan en el perfil del usuario. Este se encuentra en el directorio 'C:\Documents and Settings\NOMBRE DE USUARIO\Datos de programa\Mozilla\Firefox\Profiles' (cambiando Datos de programa a Application Data para la versión de windows en inglés). Nuestro profile lo encontraremos en una carpeta con un nombre raro que tiene como postfijo el texto '.default'.
El contenido de esta no lo tocaremos pues lo que nos es relevante esta en la carpeta extensions.
Una vez en la carpeta extensions, veremos carpetas con nombres más que desagradables. Lo que debemos hacer es encontrar la que corresponde a el complemento de la Mega Toolbar, lo cual lograremos buscando aquella que tenga, dentro de una carpeta con nombre chrome, el archivo megaupload.jar.

Para esclarecer donde se debe ubicar el archivo megaupload.jar, pondré como ejemplo el directorio donde se ubica en mi caso;
C:\Documents and Settings\Guillermo\Datos de programa\Mozilla\Firefox\Profiles\luybz4xj.default\extensions\{991A772A-BA13-4c1d-A9EF-F897F31DEC7D}\chrome\megaupload.jar

Ahora necesitaremos abrir dicho jar para explorar su contenido (así como abrimos un .zip) utilizando algún compresor que lo soporte.
WinRAR lo hace; para abrirlo debemos ir a Abrir con y seleccionar el programa WinRAR, pusto que sino puede que intente ejecutarlo como a un ejecutable java.
Yo recomiendo utilizar el compresor 7-Zip el cual es free y soporta casi que todo formato.

Una vez abierto debermos extraer el archivo content\newTab.xhtml para poder editarlo y luego sustituir el que se encuentra en el jar.

Este archivo xhtml es el template a partir del cual se genera la "página en blanco" que la barra de Megaupload nos setea como defecto. En este se definen un par de funciones javascript, entre las cuales nos importa la función disableTabObserve que es invocada si marcamos el checkbox como explique en el comienzo del post.
Aquí puede verse una imagen con la función aún sin modificarse.


Mega Toolbar instalada en el browser Mozilla Firefox

Lo que deberemos hacer es sustituir la línea 54 donde dice
DTFox.prefs.set('ntObserve',false);

por la siguiente línea
MU_DTFox.prefs.set('ntObserve',false);


En la siguiente figura puede verse como debería quedar una vez modificada.


Mega Toolbar instalada en el browser Mozilla Firefox

Hecho esto se debe sustituir el archivo dentro del zip, y realizar los siguientes pasos para asegurarnos de que Firefox (y más precisamente la barra de Megaupload) tomará la modificación.
  1. acceder al menú Herramientas >> Complementos y buscar el complemento Megaupload Toolbar 3.x
  2. seleccionar y desactivar (no desinstalar) el complemento
  3. reiniciar Firefox
  4. acceder nuevamente al menú de Complementos, buscar el complemento Megaupload Toolbar y activarlo
  5. reiniciar Firefox nuevamente


Listo, con esto finalizamos los pasos a seguir para la segunda solución.

Como comentario y previo a dejar el link donde podrán descargar el archivo megaupload.jar ya arreglado, en la línea número 14 del archivo content\client\mu_tabs.js (dentro de megaupload.jar) encontrarán la uri que carga la barra de Megaupload (cuando esta activa) que en nuestro caso es el molesto 'about:newtab' en la barra de direcciones.

Archivo megaupload.jar arreglado


03 julio 2009

Solucionar error de Megaupload Toolbar en Firefox

Al igual que muchos/as, acostumbro descargar diversidad de cosas de los varios file-hosting/alojamientos de archivos que hay en la vuelta. Algunos de estos proveen herramientas para facilitarnos la vida al momento de subir/descargar, organizar y/o buscar archivos.
En este post hablaré y mostrare cómo solucionar un problema que presenta la herramienta Mega Toolbar, que es propia y desarrollada para el file-hosting Megaupload.

El problema que trato a continuación se da si se cumplen los siguientes requisitos, lo cual no quita que suceda en algún otro caso particular.
  • Navegador Mozilla Firefox (versión 1.5 hasta la 3.5 inclusive)
  • Sistema operativo Windows XP en español
  • Mega Toolbar 3

El que windows este en español no es un error. Capaz que basta con que no este en inglés pero, al no estar seguro, prefiero no darlo por sentado. Así pues puede que este post sea provechoso para la comunidad habla hispana más que nada :p

Advertencia! De aquí en más comienza la explicación del problema y de cómo solucionarlo uno mismo. Para arreglarlo sin entrar en más detalles vaya directamente al último párrafo del post.


En la siguiente imagen se ve la Mega Toolbar como la vemos en firefox, y también aprovecho para señalar no la raiz de este problema pero sí la funcionalidad que esta estrechamente vínculada mismo: el Email.

Mega Toolbar instalada en el browser Mozilla Firefox

Ya con la barra instalada en el sistema y activado el complemento de ésta en Firefox, cada vez que levantamos este último nos muestra esta excepción,

[Exception... "Component returned failure code: 0x80520001
(NS_ERROR_FILE_UNRECOGNIZED_PATH) [nsILocalFile.initWithPath]" nsresult: "0x80520001
(NS_ERROR_FILE_UNRECOGNIZED_PATH)" lccation: "JS frame :: chrome://megaupload/content/xpcom/network.js :: anonymous :: line 38" data: no]

Capaz con una imagen es más fácil de reconocerla

Mensaje de error al levantar el browser Mozilla Firefox

La excepción indica que el error se produce en la línea nro 38 del JavaScript network.js. Si se desea se puede ver el script directamente en el navegador accediendo a la dirección "chrome://megaupload/content/xpcom/network.js" (notar que se escribe chrome y no http).
En la línea 38 veremos la sentencia 'file.initWithPath(path);' en la cual se produce la excepción pero no es el problema. Esta función, según su especificación, debe recibir rutas absolutas.

Durante la carga del complemento de firefox para instanciar la barra, se pretende asociar el ejecutable EmailNotifier.exe a la funcionalidad Email que se muestra en la primer imagen, el cual se ubica en directorios diferentes acorde al idioma de nuestra distribución de windows:
  • español C:\Documents and Settings\All Users\Datos de programa\EmailNotifier
  • inglés C:\Documents and Settings\All Users\Appliaction Data\EmailNotifier


Ahora antes de avanzar más, ubicaremos dicho complemento de firefox para esta barra problemática.
Como habrán notado, en un mismo equipo, cada usuario puede gestionar su preferencias de firefox independientemente de las preferencias de los demás usuarios, en lo que también se incluyen los complementos.
La información de las preferencias y complementos se almacenan en el perfil del usuario. Este se encuentra en el directorio 'C:\Documents and Settings\NOMBRE DE USUARIO\Datos de programa\Mozilla\Firefox\Profiles' (cambiando Datos de programa a Application Data para la versión en inglés). Nuestro profile lo encontraremos en una carpeta con un nombre raro que tiene como postfijo el texto '.default'.
El contenido de esta no lo tocaremos pues lo que nos es relevante esta en la carpeta extensions.
Una vez en la carpeta extensions, veremos carpetas con nombres más que desagradables. Lo que debemos hacer es encontrar la que corresponde a el complemento de la Mega Toolbar, lo cual lograremos buscando aquella que tenga, dentro de una carpeta con nombre chrome, el archivo megaupload.jar.

Para esclarecer donde se debe ubicar el archivo megaupload.jar, pondré como ejemplo el directorio donde se ubica en mi caso;
C:\Documents and Settings\Guillermo\Datos de programa\Mozilla\Firefox\Profiles\luybz4xj.default\extensions\{991A772A-BA13-4c1d-A9EF-F897F31DEC7D}\chrome\megaupload.jar
Horrible, no es verdad?

Cuando accedimos con el navegador al script network.js a través de la dirección chrome://megaupload/.../network.js lo que hicimos fue navegar dentro de éste archivo jar.


Continuando con el problema.
Necesitaremos abrir dicho jar para explorar su contenido (así como abrimos un .zip) utilizando algún compresor que lo soporte.
WinRAR lo hace; para abrirlo debemos ir a Abrir con y seleccionar el programa WinRAR, pusto que sino puede que intente ejecutarlo como a un ejecutable java.
Yo recomiendo utilizar el compresor 7-Zip el cual es free y soporta casi que todo formato.

Una vez abierto debermos extraer el archivo content\xpcom\dir.js para poder editarlo y luego sustituir el que se encuentra en el jar.

Este javascript define funciones que son utilizadas por el complemento para obtener las rutas (absolutas) de varios directorios en nuestro sistema operativo. El que nos es relevante, como se mencionó antes, es el de Datos de programa.
La función encargada de ubicar dicho directorio es 'DTFox.dirUtil.getProgDataDir' como vemos en la línea nro 64 del archivo. La siguiente imagen es una captura del script original.

funcion DTFox.dirUtil.getProgDataDir del javascript dir.js original
No hay que ser un gran conocedor de la programación para darse cuenta que lo que hace es usar la ruta en que se encuentra la carpeta Start Menu, puesto que la carpeta Datos de programa se ubica en el mismo directorio que ésta. Aquí es donde falla el complemento.
La carpeta Start Menu tiene por nombre Menú Inicio para windows en español. Por esto es que no encuentra el directorio y retorna un ruta no absoluta que también daría problema porque diría /Application Data cuando debería ser Datos de programa en español.

A continuación tienen una implementación de dicha función y luego una captura de como quedaría el archivo. Bastara con que sustituyan la original por la que aquí les paso y graben, en el archivo jar, el javascript dir.js ya modificado. También cabe mencionar que cada uno puede y sabrá arreglar dicha función como mejor le parezca, aquí simplemente les hago llegar mi solución la cual he comprobado que funciona.

// Return Program Data directory
DTFox.dirUtil.getProgDataDir = function (){
common = DTFox.dirUtil._getSpecialDir('CmStrt');
if (common.substr(0, common.lastIndexOf("\\Microsoft")) == ''){
if (-1 != common.lastIndexOf("\\Start Menu")) { // encontro start menu (english)
progData = common.substr(0, common.lastIndexOf("\\Start Menu")) + "\\Application Data";
} else if (-1 != common.lastIndexOf("\\Menú Inicio")) { // encontro menu inicio (spanish)
progData = common.substr(0, common.lastIndexOf("\\Menú Inicio")) + "\\Datos de programa";
} else {
alert("The lenguaje of your windows distribution is not well supported by " +
"Megaupload Toolbar, sorry :s\nMegaupload Toolbar no soporta muy " +
"bien que digamos el lenguaje de tu distribución de windows, lo lamento :s");
}
}else{
progData = common.substr(0, common.lastIndexOf("\\Microsoft"));
}
return progData;
}


funcion DTFox.dirUtil.getProgDataDir del javascript dir.js arreglada

Luego de haber hecho todo lo anterior tenemos que reiniciar el complemento de la Mega Toolbar para que tome los cambios. El reiniciar un complemento es simplemente desactivarlo y luego volverlo a activar.
Para esto, en Firefox deben realizar los siguientes pasos:
  1. acceder al menú Herramientas >> Complementos y buscar el complemento Megaupload Toolbar 3.x
  2. seleccionar y desactivar (no desinstalar) el complemento
  3. reiniciar Firefox
  4. acceder nuevamente al menú de Complementos, buscar el complemento Megaupload Toolbar y activarlo
  5. reiniciar Firefox nuevamente

Con esto estaría solucionado.
Igual quiero mencionar que este problema no tiene que ver con el problema de la página que aparece al crear nuevas tabs. Esto un tema de configuración que explicaré como modificarla en el próximo post seguramente.


Claro esta que no voy a esperar que todo el mundo siga el proceso anterior. Lo hice a fin de explicar a quien le interese saber cómo lo solucione.

Para quien busque arreglarlo rápidamente y seguir con otra cosa, aquí debajo dejo un link (haganme saber si lo necesitan pero ya caduco) para que descarguen el archivo megaupload.jar el cual tendrán que simplemente ubicarlo, sustituyendo al original que más arriba mencioné cómo encontrarlo, en un direcotorio similar a este C:\Documents and Settings\nombre_de_usuario\Datos de programa\Mozilla\Firefox\Profiles\nombre_horrible.default\extensions\{991A772A-BA13-4c1d-A9EF-F897F31DEC7D}\chrome\megaupload.jar.

Archivo megaupload.jar arreglado


Nro de visita Cantidad de visitas recibidas