zoukankan      html  css  js  c++  java
  • Mozilla研究—让minimo支持安装功能

    Mozilla研究—让minimo支持安装功能

     

    转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd

    作者联系方式:李先静<xianjimli at hotmail dot com>

    更新时间:2007-3-25

     

    mozilla是一个以浏览器为中心的软件平台,它在我们平台中占有重要地位。我们用它来实现WEB浏览器、WAP浏览器、邮件系统、电子书和帮助阅读器等应用程序。为此,我最近花了不少时间去阅读mozilla的代码和文档,我将写一系列的BLOG作为笔记,供有需要的朋友参考。本文介绍如何让minimo支持安装功能。

     

    我们打算让minimo同时充当WEB浏览器和WAP浏览器,mozilla有个wmlbrowser扩展,它提供了WML到HTML的转换,从理论上说是没有问题的。麻烦在于Wmlbrowser是以xpi安装包提供的,但是minimo不支持安装功能,也不支持扩展管理。为了让minimo支持安装功能,花了我近两周时间才搞定,这里简单总结一下吧:

     

    1.         增加下列编译选项。

    --enable-installer

     

    2.         修改xpinstall.js,增加:

    pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");

    pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul?type=themes");

    pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul?type=extensions");

    pref("xpinstall.dialog.progress.type.skin", "Extension:Manager-themes");

    pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager-extensions");

     

    3.         修改modules/libpref/src/init/all.js,增加:

    pref("extensions.logging.enabled", true);

    pref("general.skins.selectedSkin", "classic/1.0");

    pref("extensions.update.url", "chrome://mozapps/locale/extensions/extensions.properties");

    pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties");

    pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties");

    pref("app.extensions.version", "1.0")

     

    4.         修改dom/src/base/nsJSEnvironment.cpp,否则确认对话框无法关闭,这里的修改可能会有副作用。

    ScriptEvaluated(PR_FALSE); -->ScriptEvaluated(PR_TRUE);

     

    5.         修改embedding/minimo/app/Minimo.cpp,增加创建对窗口和销毁窗口的事件处理。仅适用于基于firefox 1.5的版本。

     

    6.         修改toolkit/Makefile.in,加入对xre mozapps等子目录的编译。

     

    7.         修改embedding/components/windowwatcher/src/nsWindowWatcher.cpp,在LoadURI之后,重新调用AttachArguments。因为在LoadURI之前,窗口为空,参数设置会失败,结果在javascript中取不到参数。

     

    8.         修改toolkit/xre/Makefile.in,增加-I_xpidlgen,否则找不到头文件。

     

    9.         修改nsAppRunner.cpp,去掉XPCOM_TRANSLATE_NSGM_ENTRY_POINT的定义。

     

    10.     修改nsAppRunner.cpp,增加kAppData的定义。

     

    11.     修改nsAppRunner.cppApprunner_NSGetModule --> NSGetModule

     

    12.     修改toolkit/xre/Makefile.in,把xulapp编译为动态库。

     

    13.     修改toolkit/xre/Makefile.in,定义APP_VERSION,否则安装程序检查版本号会失败。

     

    14.     修改nsSoftwareUpdateRun.cpp,不要使用ExtensionManager去安装。

     

    如果支持wmlbrowser,还要修改其它地方,这里不多说了。

     

    ~~end~~

     
  • 相关阅读:
    macbook 无声音解决方案
    webapck dev server代理请求 json截断问题
    百度卫星地图开启
    服务器 nginx配置 防止其他域名绑定自己的服务器
    记一次nginx php配置的心路历程
    遇到npm报错read ECONNRESET怎么办
    运行svn tortoiseSvn cleanup 命令失败的解决办法
    svn add 命令 递归目录下所有文件
    m4出现Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
    Ubuntu下安装GCC,mpc、mpfr、gmp
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167741.html
Copyright © 2011-2022 走看看