2012-11-10 62 views
1

我想将文件下载到Windows应用商店的DownloadsFolder中。然后我想打开一个Windows资源管理器打开DownloadsFolder(实际上我在DownloadsFolder中创建的文件夹)
但我无法弄清楚如何去做。从Metro风格应用程序启动Windows资源管理器

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

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

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

如果浏览器可以做到这一点,为什么我不能? 有没有办法让我启动Windows资源管理器,或者是否存在可能性之外的现实?

+0

这不能从Windows应用商店应用完成。浏览器是特殊的,并且[具有超出标准Windows应用商店应用的权限](http://go.microsoft.com/fwlink/?linkid=243079&clcid=0x804)(可能为英文网页),因此请勿将它们用作Windows应用商店应用可以执行的操作的示例。 –

+0

你不能这样做。 Windows应用商店应用已被沙盒化,无法访问桌面。但是,WinRT API允许通过文件(FilePicker)导航。您是否有理由特别需要无法通过WinRT API实现的浏览器? –

+0

我很害怕这是事实。我想要做的是让我们的beta测试人员更轻松。当我们发布新版本时,我下载了新版本。我希望至少能够弹出浏览器,然后右键单击并在PowerShell中运行它。 – ChrisMcB

回答

0

如果你愿意有一些非Windows存储组件解决方案,有解决类似的问题。尽管无法直接启动进程,但您始终可以在Windows服务中运行HTTP侦听程序,该服务可侦听来自沙盒Windows应用商店(Metro风格)应用程序的命令,并为您启动资源管理器(或任何其他进程)。一个微不足道的方法是在Windows服务中使用Web API服务 - 只需在控制器中实现GET操作,并为可执行文件启动参数以及可选的可执行参数。

虽然这是围绕沙箱安全性进行最终运行的,但您可能希望拥有一个定制的Web API,它只是启动预先打包的一组应用程序(如Explorer或您自己的应用程序之一)。

当然,对于消费者应用程序,这不是一个好的解决方案,因为您不能只安装Windows应用商店中的所有内容。不过,对于LOB应用程序来说,这不是一个坏的妥协,因为你通常对环境有更多的控制权。这是将某些指标或其他数据展示到活动切片并在点击切片时启动桌面应用的好方法。无论这是否会带来良好的用户体验,都是完全不同的谈话。

0

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

相关问题