Thanks John, I've solved this problem by explicitly call: this._request instanceof Components.interfaces.nsIJSXMLHttpRequest; before assign the event handler. now I can download the mar file, but it seems the installation doesn't happend automatically, the update.status is changed to pending, but the mar file didn't get installed ever. I could do manually running updater.exe to apply the mar file, but I think it should happen automatically. How does firefox call updater? it is commented in the js file : " // Tell the updater.exe we're ready to apply. " after complete download. and also I got access violation after this when saving the updates, it is just trying to modify the active-update.xml and updates.xml file. I could not figure out why.