我想写一个函数,很简单地最小化我的Windows 8沉浸式应用程序,并在资源pipe理器中打开一个文件 – 最好是如果该文件是在一个文件夹与多个文件,突出文件。
public async void OpenFile( string filePath) { StorageFile File = await StorageFile.GetFileFromApplicationUriAsync (new Uri(filePath, UriKind.RelativeOrAbsolute)); ; if (File != null) { await Launcher.LaunchUriAsync(new Uri(File.Path)); } }
此代码给我一个权限错误。 有任何想法吗?
这纯粹是从我的角度来看内部应用程序
这是你想要的方法的核心问题。 Windows Store生态系统中没有“内部应用程序”的概念。 获取在另一台计算机上运行的商店应用程序的唯一可能方式是获取只能从商店获得的许可证密钥。
当您在开发机器上开发商店应用程序时,这很容易被忽视。 它看起来像这个许可证密钥不需要运行和调试你的应用程序。 但实际上有一个,你可以在Visual Studio每个月用一个对话框来打断你,重新获得你的开发者许可证密钥。 这是一个临时性的关键,只有一个月的时间,纯粹是为了给你足够的时间让你的应用程序运行稳定。 没有任何机制将密钥传输到另一台机器,或者将其保存(和程序)超过一个月到期。
您当然也可以将内部应用程序发布到商店。 但是,像其他任何商店应用程序一样,您将通过验证程序对其适用性和稳定性进行审查。 不仅仅是像WACK这样的机械测试,还有两个人会在你的应用程序发布之前测试你的应用程序。 他们会毫不犹豫地拒绝你的应用程序,当你做任何事情,试图解决沙箱限制,包括协议处理程序黑客。
一旦获得批准,将由任何 Windows 8用户下载。 包括一个黑客,它会对你公司内部的秘密和做法感兴趣。 非常方便,他不会摆脱他的睡衣。
典型的业务线应用程序在可预见的将来仍然是桌面应用程序。
这个答案需要更新,现在有一个机制来从专用服务器发布应用程序。 这被称为sideloading 。 该应用程序仍然需要一个证书,并花费大笔资金,但可以从私人公司控制的私人服务器而不是Microsoft Store服务器部署。
这里有一个概述。
据我记得,MS不会允许的。 该应用程序应该设计,如果它运行在一个沙箱,有限的权利。
默认情况下,您可以访问某些文件系统位置,例如应用安装目录,应用数据位置和下载文件夹,以及Windows应用商店应用。 应用程序还可以通过文件选择器或通过声明功能访问其他位置。
我已经尝试了协议处理程序的方法,但被拒绝了两次:D即使你找到一个方法来做到这一点,仍然发布,这并不意味着MS不会改变主意,并从商店中删除你的应用程序。
像汉斯·帕斯坦一样说:
划伤的想法,你不能做这个工作。
有一个特定的API,似乎没有人知道:
var success = await Windows.System.Launcher.LaunchFolderAsync(KnownFolders.DocumentsLibrary);
此API的更高级形式需要选项:
FolderLauncherOptions options = new FolderLauncherOptions(); options.ItemsToSelect.Add(file1); bool success = await Windows.System.Launcher.LaunchFolderAsync(folder, options);
您也可以使用options.DesiredRemainingView设置所需的视图。
https://msdn.microsoft.com/en-us/library/windows/apps/dn889617.aspx