使用XULRunner部署完成的HTML Web应用程序?

时间:2012-06-15 11:44:02

标签: web-applications xul xulrunner

我们有一个用HTML + JS编写的完成的Web应用程序。它适用于Chrome的Web App模式(只要SOP被禁用,允许来自file:// URIs的JSON请求),但我真的不想将自己仅限于Chrome作为选项(特别是因为Windows部署可以痛苦)。

如何使用XULRunner部署此应用程序?整个UI已经实现,因此XUL代码应该尽可能小(基本上“这里是网站,渲染它,并允许AJAX请求到$ domain”)。有一些教程如何做到这一点?我发现的那些都集中在纯XUL应用程序上......

2 个答案:

答案 0 :(得分:3)

XULRunner旨在运行基于XUL的应用程序,因此关注它们的文档并没有错。但是,如果您只需要该应用程序来显示Web应用程序,那么您的XUL应用程序可以非常简单。基本上,您唯一的XUL文件看起来像这样:

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    title="My Web App"
    id="webapp-window"
    width="800"
    height="600"
    persist="screenX screenY width height sizemode">
  <browser type="content-primary"
      src="index.html"
      flex="1"
      disablehistory="true"/>
</window>

这是一个会记住它的大小和位置的窗口以及一个完全填充它的浏览器元素。供参考:<xul:window><xul:browser>

chrome.manifest文件看起来像这样:

content webapp content/

这会将content/子目录声明为与chrome://webapp/content/对应 - 您可以将主XUL文件和实际的Web应用程序放在哪里。由于使用了chrome://协议,Web应用程序将以完全权限运行,这意味着它将被允许在任何域上使用XMLHttpRequest(运行具有完全权限的Web应用程序并不是很好安全方面,但这是禁用同源策略的最简单方法。)

最后文件defaults/preferences/prefs.js告诉XULRunner在启动时打开哪个窗口:

pref("toolkit.defaultChromeURI", "chrome://webapp/content/main.xul");

而且已经是这样了。查看有关application.ini的常用教程。

答案 1 :(得分:3)

我建议您查看Webapp XUL Wrapper。来自自述文件:

Webapp XUL Wrapper是一个构建脚本的集合,用于将Web应用程序打包为适用于Mac,Windows和Linux的可分发软件包。

最终结果是您的Web应用程序的独立和离线版本。

包含在分发包中:

  • 具有主浏览器窗口和关于对话框的最小XUL应用程序
  • 捆绑的HTTP server
  • XULRunner 17(Gecko 17)