Как сохранить файлы в AppData при использовании Microsoft Desktop App Converter для преобразования приложения Win32 в UWP? - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть игра, которая была изначально написана на QuickBasic в 1990-х годах. Я преобразовал его в приложение Win32, используя QB64. Затем я использовал конвертер приложений Microsoft для настольных компьютеров, чтобы упаковать его в приложение UWP и отправить его в Microsoft Store (оно было принято ).

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

Существует несколько примеров кода, доступных в Интернете для того, чтобы взять приложение Win32, написанное на C #, C, C ++ и т. Д., И использовать его вместо LocalAppData. К сожалению, я не вижу ничего, что поможет мне с этим приложением.

Есть ли способ заставить файлы сохранения работать в этом случае? Я надеюсь, что, возможно, есть способ сказать: «Эй, когда я говорю« сохранить файл », я имею в виду сохранить его в папке LocalAppData для этого конкретного приложения». Это, вероятно, должно быть абстрактным, в идеале декларативной частью пакета appx, которого нет в коде QB64. Есть идеи?

1 Ответ

0 голосов
/ 03 ноября 2018

Есть два варианта исправить это (и один способ взломать):

  1. Если сохранение файла выполняется из вашего кода, измените его на запись в доступное место, например, localappdata или temp.

  2. Если сохранение файла выполняется в коде, который вы не можете изменить, то вы можете использовать новую платформу поддержки пакетов, чтобы применить исправление во время выполнения, которое перенаправляет файловые операции. Это новый фреймворк, входящий в состав обновления 1809 для Windows 10. На момент написания этой статьи это может быть еще не вариант для вас. Вот документация: https://docs.microsoft.com/en-us/windows/uwp/porting/package-support-framework?context=/windows/msix/render

  3. Хакерский способ решить эту проблему, который вы могли бы попробовать, - это добавить EXE-файл запуска в ваш пакет и сделать его точкой входа приложения. Затем программа запуска скопирует ваш фактический EXE-файл в доступное для записи место (localappdata и т. Д.), А затем запустит его оттуда. Все ваши записи в файл будут успешны.

...