1

我有一个游戏,它最初是在 1990 年代用 QuickBasic 编写的。我使用 QB64 将其转换为 Win32 应用程序。然后我使用微软的桌面应用转换器将它打包为一个 UWP 应用并提交到微软商店(它已被接受)。

游戏似乎运行良好,除了保存文件。每当您尝试保存文件时,它都会引发权限被拒绝错误。从到目前为止我所能找到的情况来看,UWP 应用程序似乎无法保存在安装目录中,这可能是我的应用程序正在尝试做的事情。

有许多在线代码示例可用于获取用 C#、C、C++ 等编写的 Win32 应用程序,并让它使用 LocalAppData 代替。不幸的是,我没有看到任何可以帮助我使用这个应用程序的东西。

有没有办法让保存文件在这种情况下工作?我希望有一种方法可以说,“嘿,当我说保存文件时,我的意思是把它保存到这个特定应用程序的 LocalAppData 文件夹中。” 这可能需要是抽象的,理想情况下是不在 QB64 代码中的 appx 包的声明性部分。有任何想法吗?

4

1 回答 1

3

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

  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 等),然后从那里启动它。然后,您的所有文件写入都会成功。

于 2018-11-03T12:54:49.793 回答