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;

两者都将生成相同的文件夹。绝对路径不同:

  1. WP7 是:"C:\Data\Users\DefApps\AppData\{YOUR_APP_ID}\local"
  2. 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,您将收到包含所有旧数据的同一文件夹。

新应用将在安装后替换您的旧应用。