1

我想将文件下载到 Windows 应用商店应用程序中的 DownloadsFolder。然后我想在 DownloadsFolder 上打开一个 Windows 资源管理器(实际上是在我在 DownloadsFolder 中创建的文件夹上),
但我不知道该怎么做。

这个 stackoverflow 问题Launching a Desktop Application with a Metro-style app建议使用 Launcher.LaunchUriAsync。但文件声称:

您不能使用此方法在本地区域中启动 URI。例如,应用程序不能使用 file:/// 协议访问本地计算机上的文件。相反,您必须使用存储 API 来访问文件。

事实上,我试图使用“文件:”协议来调出资源管理器窗口。当我尝试这种机制时,Launcher.LaunchIUriAsync 失败了。

如果浏览器可以做到这一点,为什么我不能呢?有没有办法让我打开 Windows 资源管理器,或者这超出了现实的可能性?

4

3 回答 3

1

我不认为你可以从 Metro 启动 Windows 资源管理器。但是,您可以使用的一件事是文件选择器。

http://code.msdn.microsoft.com/windowsapps/File-picker-app-extension-0cb95155

于 2012-11-12T12:28:45.633 回答
0

BatRT允许您从 WinRT 应用程序运行批处理文件命令。它利用 URI 调用。这可用于打开应用程序或执行文件操作。

于 2013-05-18T20:20:22.333 回答
0

如果您愿意在您的解决方案中包含一些非 Windows 应用商店组件,则有一种解决方法。虽然您不能直接启动进程,但您始终可以在 Windows 服务中运行 HTTP 侦听器,该侦听器侦听来自沙盒 Windows 应用商店(Metro 风格)应用程序的命令并为您启动资源管理器(或任何其他进程)。一个简单的方法是在 Windows 服务中使用 Web API 服务 - 只需在控制器中实现 GET 操作,并为要启动的可执行文件提供参数以及可选的可执行参数。

不过,这是一种围绕沙盒安全性的最终运行,因此您可能希望拥有一个量身定制的 Web API,而不是只启动一组预打包的应用程序(如资源管理器或您自己的应用程序之一)。

当然,对于消费者应用程序,这不是一个好的解决方案,因为您不能只安装 Windows 应用商店中的所有内容。但是,对于 LOB 应用程序,这并不是一个糟糕的折衷方案,因为您通常可以更好地控制环境。这是将某些指标或其他数据显示到活动磁贴中并在单击磁贴时启动桌面应用程序的好方法。这是否会带来良好的用户体验是完全不同的对话。

于 2012-12-03T16:19:31.677 回答