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

Графа "Remote path" в разделе Deployment


Вопрос

Целый месяц бодаюсь с Microsoft Store, пытаясь разместить у них свое UWP-приложение в виде пакета appx. Получаю отлуп за отлупом. Проблема: приложение должно располагать папкой для пользователя, отличной от установочного каталога, где он мог бы сохранять файлы. Там же должны храниться файлы настроек. Раньше, создавая дистрибутив в InnoSetup, я всегда предусматривал создание такой папки по адресу <user>\AppData\Roaming\MyApp. Теперь всё полагается указывать в разделе Deployment - но как там указать такой адрес? Вроде бы, есть графа "Remote path", и логично существовать каким-то макросам для нее, вроде AppData - но никакой информации на эту тему я найти не смог. Видел лишь упоминания таких макросов, как res, assets, classes, library - однако все они, как я понял, относятся к мобильным платформам.

Попытки обходных маневров не удались. Сначала я решил всё класть в установочный каталог, а при первом запуске создавать нужную папку и перебрасывать в нее несколько файлов. На моем компьютере это работает, но при тестировании в Microsoft Store отчего-то валится (присылают скриншот с сообщением "Access is denied"). То ли нельзя стирать файлы в установочном каталоге, то ли нельзя в таком режиме создавать новый каталог. Потом я прочитал где-то, что UWP-приложениям всё равно, где лежат файлы, они могут их менять даже в установочном каталоге. Попробовал всё валить в одну кучу и так работать. Увы, опять отрапортовали о падении ("The app tries to create a file under WindowsApps folder").

Получается, что все-таки нужно как-то заставить appx-дистрибутив создавать при установке папку по адресу <user>\AppData\Roaming\MyApp. Но как?

Спрашивал на experts-exchange, там знатоков не нашлось. Если и здесь нет, может, кто-нибудь хотя бы подскажет, в каких местах есть смысл спросить?

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

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

  • 0
16 минут назад, Равиль Зарипов (ZuBy) сказал:

А что при запуске нельзя создать?

Не понял вопроса. Вы спрашиваете, чего именно нельзя создать при запуске? Или (если бы была запятая после слова "что") спрашиваете, отчего я не могу при запуске создать означенного каталога? Если второе, то да, как я уже написал, отчего-то нельзя. То есть, на моем компе можно, а на их конце - где тестировщики из Microsoft Store гоняют мою программу - она на этом месте валится. Почему валится, они не объясняют.

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

Мне кажется, что дело в привилегиях. Не хватает каких-то прав.

Меня тоже такая мысль посещала. Но как это проверить? И главное, где раздобыть эти права, если дело действительно в них?

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

Обратился по электронной почте к известному специалисту Марко Канту. Он тоже не знает никаких констант для Remote path и считает, что приложение должно само распихивать файлы по каталогам при первом запуске. А на вопрос, отчего у меня так не выходит и не нужны ли здесь какие-то дополнительные права и привилегии, ответил так:

"An UWP pass has limited access to the file system. I really don't remember which folder you can write to, and which are off limits... There is Microsoft documentation covering it."

Мое приложение пытается создать и использовать папку в каталоге CSIDL_COMMON_APPDATA. Неужели это может быть по умолчанию запрещено?

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

Меня тоже такая мысль посещала. Но как это проверить? И главное, где раздобыть эти права, если дело действительно в них?

Думаю, что в манифесте где-то...

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

Думаю, что в манифесте где-то...

А вот, кстати, не факт, что дело в манифесте или вообще в каких-то правах. Тот же Марко Канту оказался столь любезен, что прислал мне ссылку на страницу майкрософтовской документации, где написано: мол, при установке любого UWP-приложения автоматически формируется хранилище пользовательских данных из трех папок, цитирую: one for local files, one for roaming files, and one for temporary files. Получается, что ни в каких AppData ничего создавать и не нужно, система сама всё создаст в подходящем месте.

Мне, однако, остается непонятным, как приложению заполучить полный адрес этого хранилища - конкретно, папки для Local app data.На указанной странице  есть инструкции, но они написаны на незнакомом мне C#. Есть также ссылки на документацию об используемом классе ApplicationData, там C# и C++, тоже малопонятный. Не поможет ли кто-нибудь перетолмачить это дело на Delphi?

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

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

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

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

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

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

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

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

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

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