static nsresult SetupInstallContext(const char* jarFile, const char* args,
static nsresult SetupInstallContext(const char* jarFile, const PRUnichar* url, const PRUnichar* args,
static nsresult SetupInstallContext(const char* jarFile,                                     const char* args,                                     JSRuntime **jsRT,                                     JSContext **jsCX,                                     JSObject **jsGlob){    JSRuntime   *rt;	JSContext   *cx;    JSObject    *glob;        *jsRT   = nsnull;    *jsCX   = nsnull;    *jsGlob = nsnull;    // JS init	rt = JS_Init(8L * 1024L * 1024L);	if (!rt)        return NS_ERROR_OUT_OF_MEMORY;    else    {        cx = JS_NewContext(rt, 8192);	    if (!cx)        {            JS_DestroyRuntime(rt);            return NS_ERROR_OUT_OF_MEMORY;        }    }    JS_SetErrorReporter(cx, XPInstallErrorReporter);    // new global object    glob = JS_NewObject(cx, &global_class, nsnull, nsnull);	    // Init standard classes    JS_InitStandardClasses(cx, glob);    // Add our Install class to this context    InitXPInstallObjects(cx, glob, jarFile, args);    InitInstallVersionClass(cx, glob, nsnull);    InitInstallTriggerGlobalClass(cx, glob, nsnull);    *jsRT   = rt;    *jsCX   = cx;    *jsGlob = glob;    return NS_OK;}