В основном следующий код копирует всю папку из установки приложения в LocalCacheFolder, чтобы ими можно было манипулировать/обновлять. В этом случае содержимое папки с именем «Данные»
Этот код отлично работает на мобильных устройствах, настольных компьютерах и на Xbox в режиме разработки, но эта строка не работает на Xbox в розничном режиме:
await file.CopyAsync(destinationFolder, file.Name, NameCollisionOption.FailIfExists);
Это также при новой установке, поэтому я знаю, что файлы еще не существуют.
Есть ли другой способ добиться этого в розничном режиме, хотя теоретически весь код UWP должен работать на разных устройствах.
private async Task setupdatabase()
{
StorageFolder destinationContainer = Windows.Storage.ApplicationData.Current.LocalCacheFolder;
string root = Windows.ApplicationModel.Package.Current.InstalledLocation.Path;
string path = root + @"\Data";
StorageFolder sfolder = await StorageFolder.GetFolderFromPathAsync(path);
await CopyFolderAsync(sfolder, destinationContainer);
}
public static async Task CopyFolderAsync(StorageFolder source, StorageFolder destinationContainer, string desiredName = null)
{
StorageFolder destinationFolder = null;
destinationFolder = await destinationContainer.CreateFolderAsync(desiredName ?? source.Name, CreationCollisionOption.OpenIfExists);
foreach (var file in await source.GetFilesAsync())
{
await file.CopyAsync(destinationFolder, file.Name, NameCollisionOption.FailIfExists);
}
foreach (var folder in await source.GetFoldersAsync())
{
await CopyFolderAsync(folder, destinationFolder);
}
}