Вы можете упаковать любое количество файлов в приложение AIR (хотя время экспорта может существенно возрасти).Вы не можете создать «просто» исполняемый файл, потому что приложения AIR должны быть установлены, а HTMLLoader в любом случае потребуются отдельные файлы для страниц и изображений.По сути, все, что вам нужно сделать, это:
- создать AIR с mx: HTML в качестве основного содержимого
- указать mx: HTML для приложения: /index.html
- убедитесь, что файлы вашего сайта массово встроены в установщик (поместите их в src dir)
Чтобы файлы pdf работали в браузере, пользователь должен установить Acrobat.Flash-контент должен работать внутри mx: HTML. Обновление:
Скрыть все файлы от пользователя сложнее.Я сделал нечто подобное, но не весь сайт, а приложение со встроенными страницами и ссылками.
Весь ваш контент можно упаковать в какой-нибудь zip-файл (не в exe, даже собственное приложение AIR не может настроить свою оболочку exe.) Вы можете дажезашифруйте каждый файл, если хотите.Проблема в ссылках и файлах (изображения, стили и сценарии.)
Я решил проблему с изображениями с помощью схемы URI данных (см. Мой вопрос - с самоответом - об этом.) Я думаю, что другие файлы могут бытьи таким образом.
Чтобы ссылки работали, вам нужно прослушать Event.LOCATION_CHANGE.Новая локация сообщит, куда HTML-элемент управления хочет перейти (он не сможет найти страницу), разархивирует соответствующую страницу и установит ее как htmlText.Итак, если вы действительно хотите встроить все, я бы сделал следующее:
- Упакуйте все ваши файлы в один zip-файл для последующего распаковывания, используя некоторую библиотеку с непоследовательным zip-доступом (я использовал airxzip от coltware))
- Сделать страницу обслуживающей системы.Это включает в себя распаковку страницы, сканирование ее на наличие использованных файлов (css, js, pictures), распаковку файлов, преобразование их в base64 и встраивание в страницу с данными: схема URI.Если ваши файлы не (или редко) распределяются между страницами, вы можете вставить их перед упаковкой и использовать как есть.Я не знаю, поддерживает ли Webkit JavaScript через этот протокол, даже если нет, вы можете преобразовать его в текстовый скрипт.