29 октября 2007

Добавление папки с проектами в доверенную зону Flash Player

Если вы являетесь (не скажу, что счастливым) обладателем Flex Builder IDE, то эту статью вам читать не обязательно, поскольку с описываемой в ней проблемой вы не столкнетесь (хотя о том, почему не столкнетесь, вы сможете узнать только, если дочитаете ее до конца). Однако если вы сами собрали для себя среду разработки на основе Open Source редактора, вроде FlashDevelop, и бесплатной Flex SDK, то описываемые в статье манипуляции окажутся для вас весьма полезными.

Итак, в чем заключается проблема? Проблема заключается в том, что вы не сможете тестировать локально свои приложения, если их функционал выходит за рамки песочницы безопасности Flash Player. Допустим, вы разрабатываете какой-либо проект, в котором SWF-ролик должен взаимодействовать с JavaScript на странице посредством ExternalInterface либо загружать данные с удаленного домена. Flash Player расценивает подобные операции как потенциально опасные и попросту блокирует их. При этом он может даже ничего вам не сообщить. Поэтому человек, впервые столкнувшийся с подобной проблемой, может потратить большое количество времени на то, чтобы добраться, наконец, до ее истинных причин.

Чтобы решить эту проблему, нужно добавить ваш ролик, или папку, в которой находится ваш ролик, в доверенную зону Flash Player. Существуют два способа сделать это:

  1. Добавить папку в доверенную зону какого-то конкретного пользователя системы (User Flash Player Trust directory).
  2. Добавить папку в доверенную зону всех пользователей системы (Global Flash Player Trust directory).

Первый вариант довольно легко достигается посредством использования Setting Manager. Для этого переходим на специальную страницу менеджера настроек, в выпадающем списке «Edit locations…» выбираем пункт «Add location…» и указываем путь до SWF-ролика или папки с роликом.

Так же можно вручную создать файл SOMETHING.cfg (вместо SOMETHING написать все, что угодно), указать в нем доверенные директории или файлы и поместить этот файл в одну из следующих папок:

  • для пользователей Windows: C:\Documents and Settings\USER\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust\;
  • для пользователей Mac OS: /Users/USER/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust.

Вместо USER мы должны указать имя пользователя, для которого мы добавляем эти пути в доверенную зону. Синтаксис этого файла предельно прост — вы должны помнить всего два правила:

  1. Каждый новый путь к файлу или папке должен быть записан с новой строки.
  2. Комментарии помечаются символом решетки «#».

В качестве примера приведу содержимое файла C:\Documents and Settings\Yuri\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust\FlashDevelop.cfg, который в настоящий момент находится у меня на компьютере:

CODE:
  1. # Добавляем директорию с проектами FlashDevelop,
  2. # в доверенную зону Flash Player.
  3. D:\Workspace_FD

Теперь поясню, почему пользователи Flex Builder никогда не столкнутся с описываемой в этой статье проблемой. Все дело в том, что в папке FlashPlayerTrust так же можно обнаружить файл flexbuilder.cfg, в котором Flex Builder совершенно таким же образом прописывает пути к своим папкам для хранения проектов. Поэтому все SWF-файлы, присутствующие в этих папках, автоматически попадают в доверенную зону.

Но что делать, если вы хотите добавить какой-либо локальный путь в доверенную зону всех пользователей текущего компьютера? Нужно точно таким же способом создать файл со списком доверяемых путей, но добавить его нужно уже в Global Flash Player Trust directory, действия которой будет распространяться на всех пользователей системы. Эта директория находится в следующих местах:

  • для пользователей Windows: C:\windows\system32\Macromed\Flash\FlashPlayerTrust;
  • для пользователей Mac OS: /Library/Application Support/Macromedia/FlashPlayerTrust.

На этом все. Кратчайшего вам дебага!

Теги:


12 комментариев к записи:

Alex Batsuev [ 29 октября , 2007 в 12:46 ]

PS: ложим его в папку проекта и пускаем.

Alex Batsuev [ 29 октября , 2007 в 12:32 ]

Мы распостраняем волшебный батник ;-)

CODE:
  1. CLS
  2. ECHO OFF
  3. ECHO Registering AnyChart SWF Folder in FlashPlayer Security Trust Folder...
  4. ECHO %CD%> "%APPDATA%\Macromedia\Flash Player\#Security\FlashPlayerTrust\anychart%RANDOM%.cfg"
  5. ECHO Done. Please restart your Browser if it launched.
  6. PAUSE
  7. EXIT

Юрий Яровой [ 29 октября , 2007 в 14:41 ]

Ловкий ход. Двойным щелчком по этому bat-файлу производится добавление директории, в которой он запускается в доверенную зону Flash Player. Обязательно возьму этот прием на вооружение. Кстати, а есть ли аналог bat-файлов для Mac OS, а как бы выглядело там его содержимое?

Alex Batsuev [ 29 октября , 2007 в 14:45 ]

Пока, к сожалению, нету.
Но думаю в течении месяца че нить сделаем =)

Alex Batsuev [ 29 октября , 2007 в 14:51 ]

Кстати, важный пункт:
Браузер надо объязательно перезапускать, если он открыт. Иначе начинается тупняк аля:
"Я все сделал, как описано, но ничего не работает".

Юрий Яровой [ 29 октября , 2007 в 15:21 ]

Представляю. =))

Demyan [ 30 октября , 2007 в 01:18 ]

Специально для тех, кто винды не держит.

CODE:
  1. #!/bin/bash
  2. FP_SEC=$HOME/.macromedia/Flash_Player/#Security/FlashPlayerTrust
  3.  
  4. FL_PROJECT_DIR="$PWD"
  5. if [ $1 ]
  6. then
  7.     if [ "$1" = "--help" ]
  8.         then
  9.         echo "Usage: `basename $0` /path-to-flash-project">&2
  10.         exit 0
  11.     else
  12.         if [ -d $1 ]
  13.         then FL_PROJECT_DIR=$1
  14.         else echo "$1 is not directory. Used $PWD"
  15.         fi
  16.     fi
  17. fi
  18. echo $FL_PROJECT_DIR> $FP_SEC/access$RANDOM.cfg
  19. echo "\"$FL_PROJECT_DIR\" now is Trusted"
  20. echo "You need to restart your browser!"
  21. exit

Я думаю на MacOSХ это тоже пускаемо, нужно только правильно указать "FP_SEC"

Юрий Яровой [ 30 октября , 2007 в 12:43 ]

Ну вот вроде и разобрались с остальными платформами. Спасибо, Demyan.

Philippe [ 23 ноября , 2007 в 11:16 ]

- close your web browsers
- open FD Files Panel
- navigate to project directory
- right click on any file
- select: Add To Trusted Paths
- enjoy

Юрий Яровой [ 23 ноября , 2007 в 12:55 ]

Philippe, thanks for your comment and your help! I don't know anything about this feature. :)

(Ну вот, собственно, пошаговая инструкция от одного из разработчиков FlashDevelop IDE, показывающая как в этой среде можно по быстрому добавить файл в доверенную зону FlashPlayer).

Philippe [ 23 ноября , 2007 в 13:15 ]

Я рад я вас помогал, Юрий ;)

Elast [ 26 января , 2009 в 15:20 ]

если батник лежит в папке в имени которой есть русские буквы, то cfg файл записывается не правильный путь, вместо русских букв киривые символы. Как быть?