【问题标题】:How to save files to AppData when using Microsoft Desktop App Converter to convert a Win32 app to UWP?使用 Microsoft Desktop App Converter 将 Win32 应用程序转换为 UWP 时如何将文件保存到 AppData?
【发布时间】:2019-04-07 06:49:59
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你需要保存的不是AppData(这里没有写权限),而是LOCALAPPDATA
  • 谢谢,我已经相应地更新了问题详情。

标签: winapi uwp desktop-bridge appdata desktop-app-converter


【解决方案1】:

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

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

【讨论】:

  • 谢谢!我去看看能不能用localappdata!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 2017-01-18
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
相关资源
最近更新 更多