Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Создание и запись в файл в директории с программой. (http://www.flasher.ru/forum/showthread.php?t=121967)

Rzer 27.02.2009 16:48

Создание и запись в файл в директории с программой.
 
Есть код:
Код AS3:

var file:File = new File("app-storage:/sample.save");
fileStream.open(file,FileMode.WRITE);

Работает отлично, но записывает эти файлы в папочку зарытую очень далеко. Я же хочу сделать updater программы. Если же заменить app-storage:/ на app:/ выдает SecurityError. Возможно ли обойти?

DarkLight 27.02.2009 17:13

Из хелпа к File
Цитата:

applicationDirectory : File
[static] [read-only] The folder containing the application's installed files. File
applicationStorageDirectory : File
[static] [read-only] The application's private storage directory.

Rzer 27.02.2009 17:51

2 DarkLight: app:/ префикс, то же самое что и applicationDirectory. При задании пути одним из этих способов работает политика безопастности.

Получилось записать файл в папку с программой вот так:
Код AS3:

var getFilePath:File = new File("app:/sample.save");
var file:File = new File("file:///" + getFilePath.nativePath);
fileStream.open(file,FileMode.WRITE);


Air_mAn 27.02.2009 19:08

Это хак, следует учитывать что в любой момент недокументированные возможности могут прикрыть.

etc 27.02.2009 23:46

Air_mAn, это ещё почему-то я не могу писать в ту папку, куда хочу? Очень даже документировано и будет работать.

Air_mAn 02.03.2009 12:31

Цитата:

Сообщение от __etc (Сообщение 801721)
Air_mAn, это ещё почему-то я не могу писать в ту папку, куда хочу? Очень даже документировано и будет работать.

В документации сказано:
Цитата:

Unless there are administrator restrictions applied to the user’s computer, AIR applications are privileged to write to any location on the user's hard drive.
Это значит, что в дирректорию, куда установлено air приложение, при использовании абсолютного пути (вместо app:/ URL scheme), запись будет работать, но также сказано:
Цитата:

Do not write to or modify content in the application directory. The runtime prevents applications from writing or modifying files and directories using the app:/ URL scheme by throwing a SecurityError exception.
А это означает, что не рекомендуется изменять содержимое папки, куда установлено air приложение (для этого стоит защита в виде exeption). Но если вы не будете следовать рекомендациям, то нормальную работу приложения вам никто гарантировать не будет. (попробуйте изменить файл из пакета установки, и ваше приложение не запустится)
Зачем это все, можно прочитать там же, в документации Best security practices for developers

yank 16.06.2010 05:13

Кто знает как получить родительскую папку для applicationDirectory? Ведь стандартное parent для нее недоступно, видимо снова в угоду безопасности.


Часовой пояс GMT +4, время: 22:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.