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


20 comentarios:

  1. Anónimo7/7/09

    probando

    ResponderEliminar
  2. Anónimo26/7/09

    Muchas gracias por el post, lo he probado y me ha funcionado perfectamente.

    ResponderEliminar
  3. Anónimo1/8/09

    hola!! sin querer yo desinstalé el programa de megaupload tool, me serviría igual esto?, ah y al darle extraer al archivo que mencionas me sale
    secuencias de comando:
    Linea: 1
    Carácter: 1
    Error: 'DTFox' no está definido
    Codigo: 800A1391
    Origen: Error en tiempo de ejecucion de Microsoft JScript
    Aceptar

    ResponderEliminar
  4. Anónimo1/8/09

    que puedo hacer???

    ResponderEliminar
  5. Anónimo1/8/09

    ah.. y el nuevo megaupload jar... no lo puedo descargar pues me sale download limit exceeded

    ResponderEliminar
  6. "Linea: 1
    Carácter: 1
    Error: 'DTFox' no está definido
    Codigo: 800A1391
    Origen: Error en tiempo de ejecucion de Microsoft JScript"

    El complemento de Megaupload Toolbar para Firefox te lo instala automáticamente la megaupload tool que descargas de megaupload.
    Cuando desinstalas la herramienta, el complemento igual queda instalado en Firefox y podes usarlo normalmente.

    Ese error que te sale es porque instalaste el complemento pero luego NO sustituiste el archivo megaupload.jar por el que se encuentra arreglado como se explica en el post.
    Ahí veras donde debes sustituirlo, y al final encontrarás el link para descargarlo. También deberías seguir los pasos de activación y reinicio del complemento para estar seguro.

    Todo se explica al final del post.
    Saludos

    ResponderEliminar
  7. "ah.. y el nuevo megaupload jar... no lo puedo descargar pues me sale download limit exceeded"

    Eso te va a pasar siempre que no tengas cuenta premium en megaupload, descargues lo que descargues. Lo que sucede es que podes realizar una descarga a la vez.
    Solo podrás descargar el megaupload.jar o cualquier otro archivo, cuando ya no estes descargando otra cosa desde megaupload.

    Saludos

    ResponderEliminar
  8. Anónimo3/8/09

    Gracias por el " truquillo ", habia estado buscando la solucion por san google, en todos decian de desactivar la barra pero esa es la solucion facil y para mi la menos efectiva.
    Gracias por haberlo explicado tan bien, porque aunque la solucion rapida la teniamos abajo para descargar y copiar has presentado todo miniciosamente para los que queremos aprender de los errores.
    Gracias

    ResponderEliminar
  9. luciano5/8/09

    ¡Gracias por el dato!
    Muy bueno las dos soluciones. Mas aun por explicarla muy bien, no hay forma de equivocarse. En mi caso copie el archivo original y sobre la copia trabaje su modificacion (en caso de equivocarme) y luego lo reemplace, pero como dije antes no hay forma de hacerlo.
    gracias nuevamente y saludos!!!!
    luciano

    ResponderEliminar
  10. Anónimo9/8/09

    Me funciono a la perfección por el metodo facil, es decir descargue el archivo que facilitaste, lo sustitui por el original, y el error dejo de salir, todo solucionado.
    MUCHAS GRACIAS
    PD. se agradece la explicacion total, ya que asi vemos como solucionaste el problema y da mas confianza a la hora de descargar el archivo y aplicarlo.

    ResponderEliminar
  11. Anónimo26/9/09

    hey disculpa ami no me sale el xpcom...

    ResponderEliminar
  12. "...hey disculpa ami no me sale el xpcom......"

    Algo se te estará pasando por alto. Con tan poca explicación no se te puede ayudar.

    Saludos

    ResponderEliminar
  13. Hola, espero que me puedas ayudar, a mi me sale este error:
    [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIZipReader.extract]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://megaupload/content/xpcom/zip.js :: anonymous :: line 59" data: no]

    Gracias..

    ResponderEliminar
  14. Solucionado! :D, fui leyendo la explicación y lo que hice fué encontrar zip.js dentro de megaupload.jar y simplemente borrar la linea 59, ahora ya no me sale ningún error.
    Gracias.

    ResponderEliminar
  15. Gracias! Funciono perfectamente!
    Te felicito por tu conocimiento sobre algoritmos y programacion.
    La verdad, muy amable de tu parte el habernos brindado esta solucion

    ResponderEliminar
  16. muxas gracias funciona de perlas

    ResponderEliminar
  17. gracias por solucionar el problema y no ignorarlo como los que decian que simplemente desactivaras la barra eres grande amigo thank's

    ResponderEliminar
  18. Anónimo7/7/10

    GRACIAAAAAAS !!!

    ResponderEliminar
  19. Anónimo2/8/10

    Lmuy agradecido Me funciono a mil

    ResponderEliminar
  20. Anónimo3/3/11

    gracias che estaba buscando la solucion a este problema SOS GROSO

    ResponderEliminar

Nro de visita Cantidad de visitas recibidas