Развертывание готового веб-приложения HTML с помощью XULRunner?

У нас есть готовое веб-приложение, написанное на HTML+JS. Он отлично работает с режимом веб-приложения Chrome (пока SOP отключен, чтобы разрешить запросы JSON из URI-адресов file://), но я действительно не хочу ограничиваться Chrome как единственным вариантом (тем более, что развертывание Windows может быть боль).

Как развернуть это приложение с помощью XULRunner? Весь пользовательский интерфейс уже реализован, поэтому код XUL должен быть как можно минимальным (в основном «вот сайт, отрендерите его и разрешите AJAX-запросы к $domain»). Есть ли какой-нибудь учебник, как это сделать? Все те, которые я нашел, сосредоточены на чистых XUL-приложениях…


person Creshal    schedule 15.06.2012    source источник


Ответы (2)


Я предлагаю вам проверить оболочку Webapp XUL. Из README:

Webapp XUL Wrapper — это набор сценариев сборки для упаковки веб-приложения в распространяемые пакеты для Mac, Windows и Linux.

Конечным результатом является автономная и автономная версия вашего веб-приложения.

В составе дистрибутива:

  • Минимальное XUL-приложение с главным окном браузера и диалоговым окном.
  • Связанный HTTP-сервер
  • XULRunner 17 (Геккон 17)
person Community    schedule 29.11.2012
comment
Спасибо за ссылку. К сожалению, из-за проблем с производительностью мы уже давно стали родными, но я посмотрю на это в следующий раз, когда нам это понадобится. - person Creshal; 29.11.2012

XULRunner предназначен для запуска приложений на основе XUL, поэтому документация, посвященная им, не является неправильной. Однако, если вам нужно это приложение только для отображения веб-приложения, ваше 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-файл и фактическое веб-приложение. Из-за использования протокола chrome:// веб-приложение будет работать с полными привилегиями, что означает, в частности, что ему будет разрешено использовать XMLHttpRequest в любом домене (запуск веб-приложения с полными привилегиями небезопасен с точки зрения безопасности, но это самый простой способ отключить политика того же происхождения).

И, наконец, файл defaults/preferences/prefs.js, чтобы указать XULRunner, какое окно открывать при запуске:

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

И это уже почти все. Посмотрите обычные туториалы по application.ini.

person Wladimir Palant    schedule 18.06.2012
comment
Спасибо, теперь веб-страница загружается. Сорта. Есть много ошибок рендеринга, которые не появляются в обычном Firefox, и если я запускаю xulrunner с аргументом -jsconsole, он просто создает пустое, не отвечающее окно, а затем зависает. :/ - person Creshal; 18.06.2012
comment
Ошибки рендеринга, как в относительных путях, ожидающих другого базового URI, я думаю? - person Wladimir Palant; 18.06.2012
comment
Нет. Отрисовка багов, как в одном виджете, рендерится нормально, но все, что использует ExtJS, — просто мазок краски. А с включенной jsconsole запуск занимает десять минут(!), а каждое действие в консоли ошибок требует одной-двух минут для обработки. - person Creshal; 18.06.2012
comment
Не знаю, content-primary должен весь этот код работать точно так же, как и в обычном браузере, но некоторые библиотеки могут сделать предположение, что они действительны только для http://, а не для chrome://. - person Wladimir Palant; 18.06.2012
comment
Интересный. Как можно упаковать и запустить это приложение на целевом устройстве? - person Chimera; 01.02.2013
comment
@Chimera: Это полностью зависит от вас. Обычно вы будете использовать какой-либо установщик для его установки вместе с XULRunner — по крайней мере, так это делают Firefox, Thunderbird и практически любые другие приложения на основе XULRunner. - person Wladimir Palant; 02.02.2013