1

xulrunnerアプリケーションがあり、chrome.manifestファイルからリモートコンテンツを参照しようとしています。Ttは私が働いている会社のアプリケーションです。これは、一種のインターネット監視サービスとして、多くのコンピューター(それらのほとんどは他の従業員によっても使用されています)で実行されます。私が解決したい問題はこれです:そのようなアプリケーションのコードを更新するには、通常、アプリケーションが実行されているすべてのコンピューターに変更されたファイルを手動でコピーする必要があります(xulrunnerプラットフォームを介して自動更新を試みることができませんでした)。このプロセスは非常に面倒になりました。私が欲しいのは、すべてのアプリケーションがそこからそれらを参照できるように、すべてのxulファイルとjsファイルにアクセスできるWebサーバーです。これには、そのサーバーのコードを更新するだけで済みます。

私が何とかしたこと:

httpベースのURLを使用してxulファイルからjsスクリプトを参照でき、すべてが正常に機能します(ローカル、バイナリコンポーネントなどを使用できます)が、xulファイルはローカルである必要があります(変更したい)。しかし、chrome.manifestに次のような行を書くと、次のようになります。

コンテンツmy_apphttp :// path / to / app / files /

次に、default / Preferences/pref.jsの行を使用します

pref( "toolkit.defaultChromeURI"、 "chrome://my_app/content/my_app.xul");

コンソールウィンドウを開くだけで(テストのために、-consoleオプションを使用してアプリケーションを手動で実行します)、コードは実行されません。ファイルはwgetを使用してリモートでダウンロードできるので、これはWebサーバーの問題ではないと思います。

アプリケーションはWindowsマシンで動作します。

そのような動作を引き起こす何らかのセキュリティの問題がありますか、それとも私は何か間違ったことをしていますか?リモートのhttpベースのコンテンツをChromeとして登録することも可能ですか?

4

3 に答える 3

0

まず、はい、XPCOMは機能します、サーバーからのバイナリ:テストされていません、ローカルバイナリへのアクセスは機能しますが、ほぼ各機能で次のアクセス方法の1つ以上が必要になる前に、最初の行または1行にそのコードのモンスターを追加する必要があります( XUL-Runnerがセキュリティに関する不満を言うときはいつでも):/

netscape.security.PrivilegeManager.enablePrivilege( "ここでは次の1つ以上");

UniversalBrowserRead UniversalBrowserWrite UniversalXPConnect UniversalPreferencesRead UniversalPreferencesWrite UniversalFileRead

セキュリティが心配な場合は、Mozilla Development Network / Centerで読んで、その機能を正確に理解することをお勧めします。同僚の1人がそのコードを投稿してくれましたが、まだ調査する時間がありませんでした:P

しかし、それだけではありません。アクセスの問題がさらに発生します(少なくとも、アーキテクチャの変更後もまだ問題があります)。以前のようにjs-stuff(関数...)に簡単にアクセスすることはできません。

多くの場合、次のように呼び出しを変更する必要があります

parent.YOURFUNCTIONまたはwindow.parent.YOURFUNCTIONまたは同様のもの

私が「それほど簡単ではない」とはどういう意味かを理解するために、アーキテクチャ変更後のコードの例を次に示します(以前はその半分以下でした...):

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

于 2011-01-12T17:45:10.990 に答える
0

短い答え:

リモートXULアプリを実行することは可能ですが、アプリケーション全体で多くの構造変更が必要です。

詳細に:

私たちはあなたが私たちの製品で3週間以来あなたの会社に紹介したいのと同じような概念を使用しています。

XUL-Runnerを管理して、離れた場所からXULファイルを取得して実行することができます。XULファイル、サーバー上のjsファイルのバインドなどの関連するものをすべて持つことができます:)

ただし、セキュリティ上の制限があるため、「chrome:// ...」パスでは機能しません。つまり、アプリケーション全体でchrome-pathを含むすべての参照を変更する必要があります:(

xul-files、bindings、js-filesのすべてのsrc仕様を「chrome:// dir/somefile」から「../dir/somefile」や「dir/somefile」などの相対パスに変更します

リモートからアプリを起動するには、prefsファイルに次のような行を追加します

pref( "toolkit.defaultChromeURI"、 "http://" LOCATION "/bla.xul"); (XUL-Runnerはアプリの起動後にセキュリティ警告を発します)

20分前にいくつかのテストを行ったところ、(クライアント上のほぼすべてのもの、特に現在サーバー上にあるchromeフォルダーを削除した後)、chrome.manifestが不要になり、「リモート」を検索して理由を知りたいことがわかりました。グーグルのXULchrome.manifest」(それが私があなたの質問をここで見つけた理由です)。

クライアントで必要なのは、XUL-Runnerとapp-pathのappication.iniとdefaults/prefs.jsだけです。

幸運を

于 2011-01-12T14:05:44.603 に答える
0

ここにあなたが役に立つと思うかもしれないものへのリンクがあります:http://fixunix.com/mozilla/575473-re-remote-xul.html。元のメッセージも読んで、目的を達成するためのヒントを確認してください。

于 2011-01-13T10:25:45.150 に答える