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~~

     
  • 相关阅读:
    Linux文件系统之目录清单
    Linux系统使用iftop查看带宽占用情况
    性能分析之TCP全连接队列占满问题分析及优化过程(转载)
    什么是枚举及枚举的使用场合
    height:100%和height:auto的区别
    Jquery基础之DOM操作
    SSM三大框架整合(Spring+SpringMVC+MyBatis)
    js解析JSON
    mybatis中oracle实现分页效果
    MyBatis动态SQL语句
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167741.html
Copyright © 2011-2022 走看看