WP7 到 WP8.1 应用更新。 WP8.1 ApplicationData 是否会访问使用 WP7 IsolatedStorageFile 存储的相同数据?
WP7 to WP8.1 app update. Will WP8.1 ApplicationData access same data that was stored using WP7 IsolatedStorageFile?
我有一个 Windows Phone 7 应用程序,它已经在商店中存在多年了。它安装在 WP 7.x、8.0 和 8.1 设备上。我正在将应用程序转换为目标 WP8.1,因此我可以使用更新的 Microsoft AdControl(旧的将在年底停止投放广告)。这意味着我将需要开始使用 ApplicationData.Current.LocalFolder 到 read/write 数据,而不是使用旧的 IsolatedStorageFile.GetUserStoreForApplication().
我的用户有大量使用 IsolatedStorageFile.GetUserStoreForApplication() 存储的数据。如果他们将应用程序升级到 WP8.1 版本,我想确保他们不会丢失任何这些数据,并且仍然可以使用 ApplicationData.Current.LocalFolder.
访问这些数据
谁能证实是这样的?
我在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
}
}
Windows Phone 7 个应用,使用独立存储:
var store = IsolatedStorageFile.GetUserStoreForApplication();
Windows 8.1/UWP 应用程序:
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
两者都将生成相同的文件夹。绝对路径不同:
- WP7 是:"C:\Data\Users\DefApps\AppData\{YOUR_APP_ID}\local"
- WP 8.1/UWP:"C:\Data\Users\DefApps\AppData\Local\Packages\YOURCOMPANY.YOURAPP_SOMEHASH\LocalState"
但这两个路径将共享内部的相同文件夹/文件。最重要的是编辑Package.appxmanifestXML。在 Visual Studio 中用鼠标右键单击“View Code”(不要用“View Designer”打开)。在此 XML 中,您必须编辑此行:
<mp:PhoneIdentity PhoneProductId="NEW_APP_ID" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
将 PhoneProductId 替换为您旧的 WP7 应用程序的 ID,并将 PhonePublisherId 替换为您的旧 PublisherId(也来自旧的 WP7 应用程序)。如果您不这样做,该代码将为您提供不同的文件夹(WP 8.1 / UWP 代码为您提供空文件夹)。但是,使用此更改后的 ID,您将收到包含所有旧数据的同一文件夹。
新应用将在安装后替换您的旧应用。
我有一个 Windows Phone 7 应用程序,它已经在商店中存在多年了。它安装在 WP 7.x、8.0 和 8.1 设备上。我正在将应用程序转换为目标 WP8.1,因此我可以使用更新的 Microsoft AdControl(旧的将在年底停止投放广告)。这意味着我将需要开始使用 ApplicationData.Current.LocalFolder 到 read/write 数据,而不是使用旧的 IsolatedStorageFile.GetUserStoreForApplication().
我的用户有大量使用 IsolatedStorageFile.GetUserStoreForApplication() 存储的数据。如果他们将应用程序升级到 WP8.1 版本,我想确保他们不会丢失任何这些数据,并且仍然可以使用 ApplicationData.Current.LocalFolder.
访问这些数据谁能证实是这样的?
我在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
}
}
Windows Phone 7 个应用,使用独立存储:
var store = IsolatedStorageFile.GetUserStoreForApplication();
Windows 8.1/UWP 应用程序:
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
两者都将生成相同的文件夹。绝对路径不同:
- WP7 是:"C:\Data\Users\DefApps\AppData\{YOUR_APP_ID}\local"
- WP 8.1/UWP:"C:\Data\Users\DefApps\AppData\Local\Packages\YOURCOMPANY.YOURAPP_SOMEHASH\LocalState"
但这两个路径将共享内部的相同文件夹/文件。最重要的是编辑Package.appxmanifestXML。在 Visual Studio 中用鼠标右键单击“View Code”(不要用“View Designer”打开)。在此 XML 中,您必须编辑此行:
<mp:PhoneIdentity PhoneProductId="NEW_APP_ID" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
将 PhoneProductId 替换为您旧的 WP7 应用程序的 ID,并将 PhonePublisherId 替换为您的旧 PublisherId(也来自旧的 WP7 应用程序)。如果您不这样做,该代码将为您提供不同的文件夹(WP 8.1 / UWP 代码为您提供空文件夹)。但是,使用此更改后的 ID,您将收到包含所有旧数据的同一文件夹。
新应用将在安装后替换您的旧应用。