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

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

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

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

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


person Dave Mackey    schedule 03.11.2018    source источник
comment
вам нужно сохранять не в AppData (у вас нет разрешения на запись здесь), а в LOCALAPPDATA   -  person RbMm    schedule 03.11.2018
comment
Спасибо, я соответствующим образом обновил детали вопроса.   -  person Dave Mackey    schedule 03.11.2018


Ответы (1)


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

  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 и т. Д.), А затем запустит его оттуда. После этого все ваши записи в файл будут успешными.

person Stefan Wick MSFT    schedule 03.11.2018
comment
Спасибо! Я собираюсь посмотреть, смогу ли я использовать localappdata! - person Dave Mackey; 03.11.2018