Перейти к содержанию
Fire Monkey от А до Я
  • 0

Создание каталога из UWP-приложения


Вопрос

При упаковке Windows-приложения в appx все дополнительные файлы приходится класть в одну папку с исполнимым файлом, ибо Deployment Manager, судя по всему, не предусматривает возможности сразу положить их в AppData. Но я все-таки хочу, чтобы некоторые файлы были легко доступны пользователям, поэтому организовал приложение так, что оно при первом запуске создает новый каталог в AppData:

MyDirectory:=GetSpecialFolderPath(CSIDL_APPDATA)+'\MyApp';
CreateDir(MyDirectory);
TDirectory.SetAttributes(MyDirectory,[TFileAttribute.faNormal]);

После этого в созданный каталог переносятся некоторые файлы, и всё работает хорошо, за исключением одного момента: этот новый каталог невозможно открыть, например, в Проводнике. Из самого приложения легко можно открыть диалоговое окно и увидеть в нем этот каталог и все файлы; можно их читать и в них писать, но вне приложения этот каталог невидим. Всё равно что не существует.

Мне казалось, что присвоение каталогу атрибута faNormal дожно все проблемы решить. Увы, не решает. В чем тут закавыка?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
9 минут назад, wamaco сказал:

AppData скрытая папка же...

В том и дело, что AppData в Проводнике прекрасно открывается, и все папки, что в ней лежат, прекрасно видно - за вычетом вот этой, только что созданной AppData\MyApp.

Ссылка на комментарий
  • 0
4 часа назад, Вадим Смоленский сказал:

В том и дело, что AppData в Проводнике прекрасно открывается, и все папки, что в ней лежат, прекрасно видно - за вычетом вот этой, только что созданной AppData\MyApp.

Кстати, я бы расценил это как МЕГА фичу! :)) 

Попробуйте выполнить

attrib -S -H /S /C:\...\AppData\MyApp

Ссылка на комментарий
  • 0
1 час назад, wamaco сказал:

Попробуйте выполнить

attrib -S -H /S /C:\...\AppData\MyApp

Будете смеяться, но эта папка не видна даже из Command Prompt. При попытке, например, вызвать cd ...MyApp выдается "The system cannot find the path specified".

А из приложения, повторюсь, всё прекрасно открывается. Да сами можете попробовать, на каком-нибудь пустом приложении. Дело нехитрое.

Возможно, это и мегафича для тех, кто хочет понадежнее всё спрятать от дураков-юзеров, а равно от хакеров. Но у меня задача прямо противоположная.

Ссылка на комментарий
  • 0

В ходе дальнейших экспериментов поменял CSIDL_APPDATA на CSIDL_COMMON_APPDATA, и проблема ушла. Все файлы ложатся в папку  C:\ProgramData\MyApp и прекрасно видны из любого места.

Так что да, всё дело было в особом статусе папки AppData. Хотя и выглядело странно, конечно.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...