2016-10-13 7 views
0

J'ai une application Windows Phone 7 qui a été dans le magasin depuis de nombreuses années maintenant. Il est installé sur les périphériques WP 7.x, 8.0 et 8.1. Je convertis l'application en cible WP8.1, donc je peux utiliser le plus récent Microsoft AdControl (l'ancien arrêtera de diffuser des annonces à la fin de l'année). Cela signifie que j'ai besoin de commencer à utiliser ApplicationData.Current.LocalFolder pour lire/écrire des données, au lieu d'utiliser l'ancien IsolatedStorageFile.GetUserStoreForApplication().Mise à jour de l'application WP7 vers WP8.1. WP8.1 ApplicationData accédera-t-il aux mêmes données qui ont été stockées en utilisant WP7 IsolatedStorageFile?

Mes utilisateurs ont beaucoup de données qui ont été stockées en utilisant IsolatedStorageFile.GetUserStoreForApplication(). Si elles mettent à niveau l'application vers la version WP8.1, je veux être sûr qu'elles ne perdront aucune de ces données et que les données seront toujours accessibles en utilisant ApplicationData.Current.LocalFolder.

Est-ce que quelqu'un peut confirmer que c'est le cas?

Voici comment je l'ai écrit des données dans 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"); 
     } 
    } 
} 

Voilà comment je vais lire des données dans 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 
    } 
} 

Répondre

3

Windows Phone 7 app, stockage isolé en utilisant:

var store = IsolatedStorageFile.GetUserStoreForApplication(); 

de Windows 8.1/app UWP:

var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 

les deux entraîneront dans le même dossier. chemin absolu est différent:

  1. WP7 EST: "C: \ Data \ Users \ DefApps \ AppData \ {YOUR_APP_ID} \ locale"
  2. WP 8.1/UWP: « C: \ Data \ Users \ DefApps \ AppData \ Local \ Packages \ YOURCOMPANY.YOURAPP_SOMEHASH \ LocalState "

mais les deux chemins partagent le même dossier/fichiers à l'intérieur. La chose la plus importante est d'éditer Package.appxmanifest XML. Dans Visual Studio, cliquez avec le bouton droit de la souris sur "View Code" (ne pas ouvrir par "View Designer"). Dans ce XML vous devez modifier cette ligne:

<mp:PhoneIdentity PhoneProductId="NEW_APP_ID" PhonePublisherId="00000000-0000-0000-0000-000000000000" /> 

Remplacer PhoneProductId par Id de votre ancien WP7 App et PhonePublisherId par votre ancien PublisherID (de l'ancien WP7 App trop). Si vous ne le faites pas, les codes vous donneront différents dossiers (le code WP 8.1/UWP vous donne un dossier vide). Cependant, avec cette Ids modifié, vous recevrez le même dossier avec toutes les anciennes données.

Une nouvelle application remplacera votre ancienne application après l'installation.

+0

Merci GeoIT, en particulier pour la pièce supplémentaire sur le PhoneProductId. – Jared