#windows-phone-7 #windows-phone-8
#windows-phone-7 #windows-телефон-8
Вопрос:
У меня есть приложение для Windows Phone 7, которое продается в магазине уже много лет. Он установлен на устройствах WP 7.x, 8.0 и 8.1. Я конвертирую приложение в целевой WP8.1, чтобы я мог использовать более новый Microsoft AdControl (старый перестанет показывать рекламу в конце года). Это означает, что мне нужно будет начать использовать ApplicationData.Текущий.Локальная папка для чтения / записи данных вместо использования старого файла IsolatedStorageFile.GetUserStoreForApplication().
У моих пользователей есть много данных, которые были сохранены с помощью IsolatedStorageFile.GetUserStoreForApplication(). Если они обновят приложение до версии WP8.1, я хочу быть уверенным, что они не потеряют ни одной из этих данных и что данные по-прежнему будут доступны с помощью ApplicationData.Текущий.Локальная папка.
Кто-нибудь может подтвердить, что это так?
Вот как я записывал данные в WP7:
using (IsolatedStorageFile applicationStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream file = applicationStorage.OpenFile(filename, FileMode.Create, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(file))
{
sw.WriteLine("some data goes here");
}
}
}
Вот как я буду считывать данные в WP8.1:
using (Stream stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(filename))
{
using (StreamReader sr = new StreamReader(stream))
{
String line = sr.ReadLine();
// Do something with line
}
}
Ответ №1:
Приложение Windows Phone 7, использующее изолированное хранилище:
var store = IsolatedStorageFile.GetUserStoreForApplication();
Windows 8.1 / UWP app:
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
оба приведут к созданию одной и той же папки. Абсолютный путь — это другое:
- WP7 — ЭТО: «C:DataUsersDefAppsAppData {YOUR_APP_ID}локальный»
- WP 8.1 / UWP: «C:DataUsersDefAppsAppDataLocalPackagesYOURCOMPANY.YOURAPP_SOMEHASHLocalState «
но оба пути будут использовать одну и ту же папку / файлы внутри. Самое главное — отредактировать Package.appxmanifest XML. В Visual Studio щелкните правой кнопкой мыши на «Просмотр кода» (не открывайте с помощью «View Designer«). В этом XML-файле вы должны отредактировать эту строку:
<mp:PhoneIdentity PhoneProductId="NEW_APP_ID" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
Замените PhoneProductId на идентификатор вашего старого приложения WP7, а PhonePublisherId — на ваш старый PublisherId (также из старого приложения WP7). Если вы этого не сделаете, эти коды дадут вам разные папки (код WP 8.1 / UWP дает вам пустую папку). Однако с этими измененными идентификаторами вы получите ту же папку со всеми старыми данными.
Новое приложение заменит ваше старое приложение после установки.
Комментарии:
1. Спасибо GeoIT, особенно за дополнительную информацию о PhoneProductId.