Запуск SWF из файла:///без изменения пользователем настроек безопасности Flash Player

У меня есть приложение Flex, которое обладает достаточным количеством сетевого трафика, оно использует ExternalInterface для создания некоторых javascript-вызовов (для SCORM), оно загружает XML файлы, изображения, видео, аудио и имеет ряд модулей, которые могли бы загрузиться в какой-то момент...

Итак, проблема в том, что теперь у нас есть требование, когда пользователю необходимо запустить этот контент локально на машине, которая не подключена к Интернету (что означает, что они не могут подключиться к сайту Adobe, чтобы изменить свои настройки безопасности). Как вы можете себе представить, когда пользователь удваивает клики на странице html для запуска этой вещи, их приветствует предупреждение о безопасности, которое swf пытается связать с другим доменом, отличным от того, в котором он находится. Мы не можем его обернуть exe или приложение AIR, поэтому, если есть какой-то способ настроить некоторые неясные настройки безопасности, мы можем быть заблокированы. Любая идея?

6 ответов

То, что вы пытаетесь сделать, - это точно проблема, решаемая AIR. Вы действительно должны попробовать, это не так сложно подобрать. Если вы действительно не можете использовать AIR (вы не указали почему, поэтому я предполагаю, что это просто потому, что вы не хотите изучать новую систему), а затем изменение файла конфигурации безопасности решит проблему.

В основном вам нужно создать файл доверия в каталоге "Global FlashPlayerTrust". Это может сделать ваш установщик (который устанавливает все файлы javascript, SWF, html и т.д. На локальный компьютер). Вы должны создать каталог, если он не существует. Каталог для каждой ОС:

  • Windows -% WINDIR%\System32\Macromed\Flash\FlashPlayerTrust
  • Mac -/Library/Поддержка приложений /Macromedia/FlashPlayerTrust
  • Linux -/etc/adobe/FlashPlayerTrust

Затем вам нужно создать файл доверия. Вы можете назвать его чем угодно, поэтому выберите уникальное имя, которое вряд ли будет конфликтовать с другими. Что-то вроде CompanyName.cfg. Это текстовый файл, по одному пути в строке. Вы можете доверять либо одному SWF за раз, либо целому каталогу. Пример:

C:\Program Files\MyCompany\CoolApp
C:\Program Files\MyCompany\OtherApp\Main.swf

Чтобы проверить, что он работает, внутри флеш-ролика вы можете проверить System.security.sandboxType (ActionScript 1 или 2) или Security.sandboxType (ActionScript 3). Он должен иметь значение "localTrusted"


Извините, что я на самом деле не пробовал это, чтобы увидеть, работает ли это или нет... но...

Page 20 (и/или 26) этот документ может помочь. Документ ссылается на здесь. В двух словах он описывает каталоги, содержащие cfg файлы, которые, в свою очередь, содержат списки мест на диске, которые следует считать доверенными. Затем установщик для приложения будет отвечать за создание соответствующих файлов .cfg в нужном месте (глобальном или для пользователя установки).


Короткий ответ заключается в том, что если ваш swf скомпилирован с использованием-network в true, он не будет работать.

Можно ли скомпилировать версию с использованием-network в false? Или он работает на Intranet, который закрыт из Интернета и все еще общается с LMS?


Я стесняюсь сказать, что "вы не можете этого сделать", но, по моему опыту, нет способа делать то, что вы описываете. Любой, если я ошибаюсь, я бы с удовольствием узнал трюк.


Это возможно. Пожалуйста, запишите, что swfs, который вы вызываете из основного swf, имеют свойство "Доступ к локальным файлам" или нет.


Вы пытались указать разрешенный домен с помощью:

System.security.allowDomain("www.yourdomain.com");

licensed under cc by-sa 3.0 with attribution.