C#Windows应用商店后台下载程序到可移动存储

本文关键字:程序 移动存储 下载 后台 应用 C#Windows | 更新日期: 2023-09-27 18:21:21

我正在开发一款可以在所有Windows 8设备上运行的应用程序(RT必须支持),我正在添加一些离线功能,但我不知道如何下载到可移动存储设备,如USB驱动器,或者在Surface RT的情况下,下载到micro SD卡。理想情况下,我希望能够让用户指定目录,但它最终可能会下载数百个文件,因此必须只指定一次,而不是每个文件指定一次。我还希望避免要求用户手动配置库。

我已经找到了很多关于如何下载到各种库的文章,但这些文章都是到内部存储的,因此Surface RT上的空间非常有限。我如何让用户指定大量文件的下载位置和/或下载到可移动存储设备?

一个真正巧妙的解决方案是在用户选择的位置以编程方式创建库,这样用户就可以选择是在本地系统上还是在可移动设备上。

我感谢你的建议。

C#Windows应用商店后台下载程序到可移动存储

您应该利用FutureAccessList。它允许您重用用户先前授予您访问权限的文件和文件夹。

首先,用户将使用FolderPicker:选择目标文件夹

var picker = new FolderPicker();
picker.FileTypeFilter.Add("*");
var folder = await picker.PickSingleFolderAsync();

然后,您将文件夹添加到FutureAccessList中,并取回一个字符串令牌,您可以将其存储以供以后使用(例如,添加到ApplicationData.LocalSettings):

var token = StorageApplicationPermissions.FutureAccessList.Add(folder);

当你想下载一个文件时,首先从FutureAccessList获取文件夹并创建目标文件:

var folder = await StorageApplicationPermissions.FutureAccessList
                                                .GetFolderAsync(token);
var file = await folder.CreateFileAsync(filename);

有了这些数据,您可以创建一个DownloadOperation:

var downloader = new BackgroundDownloader();
var download = downloader.CreateDownload(uri, file);

从这里开始,就像下载到任何其他位置一样(开始下载,监控进度…)。