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

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

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

Ответы [ 6 ]

6 голосов
/ 13 октября 2008

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

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

  • Windows -% WINDIR% \ System32 \ Macromed \ Flash \ FlashPlayerTrust
  • Mac - / Библиотека / Поддержка приложений / 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"

0 голосов
/ 24 февраля 2010

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

0 голосов
/ 06 октября 2008

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

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

0 голосов
/ 04 октября 2008

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

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

0 голосов
/ 03 октября 2008

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

0 голосов
/ 03 октября 2008

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

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