【问题标题】:UWP (Desktop Bridge) App and User Downloadable ExecutablesUWP(桌面桥)应用程序和用户可下载的可执行文件
【发布时间】:2018-06-24 23:45:18
【问题描述】:

我们目前正在将我们的应用程序转换为 UWP(通过 DesktopBridge)并且到目前为止没有任何问题,但是我们支持用户可以创建的自定义可执行文件来扩展功能。这些可以从应用程序中下载,但是当我们尝试执行它们时,我们会收到 LP5 错误。

由于这些文件的性质,我们无法将它们添加到 appxmanifest 或从 AppStore 下载它们作为 ExtensionPacks。

有没有我们可以使用的解决方法?或者有没有人找到可以派上用场的解决方案

像往常一样,非常感谢任何帮助。 谢谢

【问题讨论】:

  • 什么是“LP5 错误”?
  • 问得非常好,弹出的对话框全文是……“解压程序时出错,代码LP5。请向作者报告。”。现在我是作者,可以保证没有使用任何打包工具。
  • 你在哪里下载并解压它们? (什么文件路径?)
  • 我们将它们下载到“(用户)/AppData/Local”下的虚拟化文件夹中,但当然在 UWP 沙箱之外,它们位于不同的位置。如前所述,我们不打包(或拆包)任何东西。它只是在 VisualStudio 中生成的一个 exe。
  • 不过需要注意的一点是,我将 notepad.exe 从窗口文件夹复制到 UWP 应用程序的虚拟地址空间中,而从该文件的应用程序中的 ShellExecute 执行的操作完全相同LP5(解包)错误

标签: uwp exe desktop-bridge


【解决方案1】:

当您的应用将文件(内容或可执行文件)写入 AppData 文件夹时,这些写入将被重定向到 %userprofile\AppData\Local\Packages{PackageFamilyName} 下的每个应用/每个用户的位置。这记录在这里:

https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-behind-the-scenes

您有几个选项可以在您的应用中完成此场景:

1) ShellExecute 从重定向位置执行您的文件

2) 使用现代 ApplicationData API 进行读写,您无需知道实际位置:https://docs.microsoft.com/en-us/uwp/api/Windows.Storage.ApplicationData

3) 使用未重定向的其他位置,例如 %temp%

关于您的方案的一般注意事项:在 Win10S 模式下的设备上不支持执行动态下载的二进制文件。只能在这些上执行存储签名的代码。

【讨论】:

  • 好吧,在 UWP 沙盒模式下文件夹的虚拟化似乎导致依赖项的启动文件夹不正确。
  • 但是,这留下了一个问题,我如何计算/获取“真实”文件夹的路径,而不是应用程序内部的虚拟文件夹?
  • Windows.Storage.ApplicationData.Current.LocalCacheFolder 返回真实路径。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 2022-01-21
  • 2019-10-19
  • 2018-04-26
  • 2015-06-23
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多