Сообщение об ошибке: доступ к пути C: \ Program Files \ WindowsApps запрещен - PullRequest
0 голосов
/ 19 декабря 2018

Я распространял свое приложение xaf Winforms + Desktop Bridge для себя через Магазин Windows.

после этого блога

Из блога я хочу предварительно сгенерироватьфайл ModelAssembly.dll, Model.Cache.xafml и ModulesVersionInfo и упакуйте их в выходной каталог.

Эти файлы создаются XAF, если они еще не существуют.

Где выходной каталог задается

Path.GetDirectoryName(GetType().Assembly.Location)

Когда я устанавливаю и запускаю приложение измагазин.Я получаю это сообщение об ошибке.

Access to the path 'C:\Program Files\WindowsApps\JobTalk.JobTalk_1.0.19.0_x64__8kpaqbvntb9aj\SBD.JobTalk.Workflow.Win10\ModelAssembly.dll' is denied.

В коде я попытался найти форму Path.GetRelativePath, но она недоступна в Framework 4.7.2

looking for path.getrelativepath

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Ответ Ксавье объясняет, что происходит не так.Причина, по которой это произошло в моем проекте, заключалась в том, что я пропустил шаг пометки связанных файлов как «Копировать, если новее»

0 голосов
/ 20 декабря 2018

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

Пожалуйста, отметьте Подготовка к упаковке настольного приложения .В документе упоминаются некоторые сценарии, связанные с вашим вопросом.

Ваше приложение выполняет запись в папку AppData или в реестр с целью обмена данными с другим приложением.После преобразования AppData перенаправляется в локальное хранилище данных приложения, которое является частным хранилищем для каждого приложения UWP.

Ваше приложение выполняет запись в каталог установки для вашего приложения.Например, ваше приложение записывает в файл журнала, который вы помещаете в тот же каталог, что и ваш exe.Это не поддерживается, поэтому вам нужно найти другое место, например, локальное хранилище данных приложения.

Здесь есть специальный сценарий, в котором вы можете получить доступ к файлам по абсолютному пути к файлам.Это ограниченная возможность, называемая broadFileSystemAccess .Добавив возможность broadFileSystemAccess, вы можете использовать API в пространстве имен Windows.Storage , чтобы получить все файлы, к которым у пользователя есть доступ.Пожалуйста, прочитайте Разрешения на доступ к файлу для получения дополнительной информации.

Обратите внимание, что документ объяснил:

Если вы отправляете приложение в Магазин, которое объявляет эту возможностьвам нужно будет предоставить дополнительные описания того, почему вашему приложению нужна эта возможность и как оно намеревается ее использовать.

...