是否可以从chrome.manifest引用远程内容? (XULRunner的)

时间:2011-01-11 18:40:32

标签: xulrunner

我有一个xulrunner应用程序,我一直在尝试从chrome.manifest文件中引用远程内容。这是我工作的公司的申请;它运行在许多计算机上(大多数也被其他员工使用)作为一种互联网监控服务。我想解决的问题是:更新此类应用程序的代码通常需要我手动将修改后的文件复制到运行该应用程序的每台计算机上(我没有运气试图通过xulrunner平台进行自动更新)。这个过程变得非常繁琐。我想要的是一个Web服务器,其中所有的xul和js文件都是可访问的,因此每个应用程序都可以从那里引用它们。这将要求我只更新该服务器上的代码,并且应用程序(重新启动时)将自动获取最新代码。

我设法做的事情:

我可以使用基于http的url从xul文件引用js脚本,一切正常(我可以使用本地,二进制组件等),虽然xul文件必须是本地的 - 我想改变。但是当我在chrome.manifest中写一行如下:

内容my_app http://path/to/app/files/

然后使用default / preferences / pref.js中的行

pref(“toolkit.defaultChromeURI”,“chrome://my_app/content/my_app.xul”);

它只是打开一个控制台窗口(测试我用-console选项手动运行应用程序)并且没有代码被执行。可以使用wget远程下载该文件,所以我猜这不是Web服务器问题。

应用程序适用于Windows机器。

是否存在导致此类行为的某种安全问题,或者我做错了什么?甚至可以将基于http的远程内容注册为chrome吗?

3 个答案:

答案 0 :(得分:0)

简短回答:

可以运行远程XUL应用程序,但需要在整个应用程序中进行大量的结构更改。

详细说明:

我们使用类似的概念,就像您希望在我们的公司推出3周一样。

您可以管理XUL-Runner以从远程位置获取XUL文件并执行它们。你可以拥有所有相关的东西,比如XUL文件,在服务器上绑定一个js文件:)

但是:由于安全限制,它不适用于“chrome:// ...”路径 意思是:您必须在应用程序中更改包含chrome路径的所有引用:(

将xul文件,绑定和js文件中的所有src规范从“chrome:// dir / somefile”更改为相对路径,如“../dir/somefile”或“dir / somefile”

从远程启动应用程序,将以下行添加到您的prefs文件

pref(“toolkit.defaultChromeURI”,“http://”LOCATION“/bla.xul”); (XUL-Runner将在启动应用程序后发出安全警告)

20分钟之前我测试了一些东西并发现(在删除了客户端上几乎所有的东西,特别是现在服务器上的chrome文件夹之后),你甚至不再需要chrome.manifest了,想知道为什么通过查找谷歌上的“远程XUL chrome.manifest”(这就是为什么我在这里找到你的问题)。

我在客户端上需要的只是:XUL-Runner和app-path中的appication.ini和defaults / prefs.js

祝你好运

答案 1 :(得分:0)

首先,是的,XPCOM工作,来自服务器的二进制文件:未经测试,访问本地二进制文件工作 但是你必须在第一行或一行中添加该代码怪物,然后才能在NEARLY EACH函数中使用以下一种或多种访问方法(每当XUL-Runner抱怨安全性时):/

netscape.security.PrivilegeManager.enablePrivilege(“此处出现以下一项或多项内容”);

UniversalBrowserRead UniversalBrowserWrite UniversalXPConnect UniversalPreferencesRead UniversalPreferencesWrite UniversalFileRead

如果您担心安全问题,我建议您在Mozilla开发网络/中心阅读,以了解这些内容的确切含义。我的一个同事给我发了那个代码而我还没来得及调查:P

但那不是全部,你会有更多的访问问题(至少我还有架构改变之后)。您不会像以前那样轻松访问js-stuff(函数...)。

通常你必须修改你的调用,如

parent.YOURFUNCTION或window.parent.YOURFUNCTION或类似的

为了让你明白我的意思“不那么容易”,这里是一个代码改变后的代码示例(以前只有一半......):

document.getElementById(“mainIframe”)。contentDocument.getElementById(“UrlBar”)。value = getSelectedBrowser()。contentWindow.location.href;

答案 2 :(得分:0)

以下是您可能会发现有用内容的链接:http://fixunix.com/mozilla/575473-re-remote-xul.html。阅读原始信息以获取如何实现您想要的提示。