使用 Microsoft Desktop App Converter 将 Win32 应用程序转换为 UWP 时如何将文件保存到 AppData?

How to save files to AppData when using Microsoft Desktop App Converter to convert a Win32 app to UWP?

我有一款游戏最初是在 1990 年代用 QuickBasic 编写的。我使用 QB64 将其转换为 Win32 应用程序。然后我用微软的Desktop App Converter将它打包成一个UWP应用并提交到Microsoft Store(已经accepted)。

游戏似乎运行良好,除了保存文件。每当您尝试保存文件时,它都会抛出权限被拒绝的错误。到目前为止,我发现 UWP 应用程序似乎无法保存在安装目录中,这很可能是我的应用程序正在尝试执行的操作。

网上有许多代码示例可用于获取用 C#、C、C++ 等编写的 Win32 应用程序并让它使用 LocalAppData。不幸的是,我没有看到任何可以帮助我完成此应用程序的内容。

有没有办法让保存文件在这种情况下起作用?我希望可能有一种说法,"Hey, when I say save a file, I mean save it to the LocalAppData folder for this particular application." 这可能需要是抽象的,理想情况下是不在 QB64 代码中的 appx 包的声明部分。有什么想法吗?

有两种修复方法(以及一种破解方法):

  1. 如果文件保存是通过您的代码完成的,请将其更改为写入可访问的位置,例如 localappdata 或 temp。

  2. 如果文件保存是在您无法更改的代码中完成的,那么您可以使用新的包支持框架在运行时应用重定向文件操作的修正。这是一个新框架,作为 Windows 10 的 1809 更新的一部分。在撰写本文时,这可能还不适合您。这是文档: https://docs.microsoft.com/en-us/windows/uwp/porting/package-support-framework?context=/windows/msix/render

  3. 一种您可以尝试的解决方法是将启动器 EXE 添加到您的程序包中并使其成为应用程序的入口点。然后,启动器会将您的实际 EXE 复制到可写位置(localappdata 等),然后从那里启动它。然后您所有的文件写入都会成功。