2012-04-12 17 views
6

यह एक समस्या है जो केवल कुछ उपयोगकर्ताओं के लिए होती है। जब भी मैं बाज़ार में अपने ऐप का एक नया संस्करण जारी करता हूं, मुझे उपयोगकर्ताओं से ईमेल मिलते हैं कि ऐप में सभी सेटिंग्स खो जाती हैं।ऐप अपडेट स्थापित होने पर सभी सेटिंग्स खो देता है

मैं इसे स्वयं पुन: पेश नहीं कर सकता हूं और मेरे पास कोई कोड नहीं है जो पृथक स्टोरेज को मिटा सकता है।

बहुत अच्छा होगा अगर किसी के बाहर कोई संकेत हो कि इसका कारण क्या हो सकता है।

+0

मुझे आपकी समस्या में भी रूचि है। मैंने अपने ऐप का परीक्षण करते समय कुछ ऐसा ही देखा। इसे विजुअल स्टूडियो से चलाते समय और फोन को लक्षित करने (एमुलेटर नहीं), कभी-कभी यह डेटाबेस को मिटा देगा और इसे फिर से बनाएगा, अन्य बार यह डेटाबेस को हटाए बिना कोड को अपडेट करेगा। – Dante

उत्तर

3

अद्यतन: यह सुनिश्चित नहीं है कि निम्नलिखित WP7 ऐप्स पर लागू होता है - मैं इसे यहां मामले में छोड़ दूंगा। मैंने केवल सामान्य ऐप्स के लिए यह कोशिश की है।

आपको पुरानी सेटिंग्स फ़ाइल को "अपग्रेड" करने की आवश्यकता होगी।

आपको यह जानने की भी आवश्यकता है कि आपको यह करने की आवश्यकता है (यानी केवल जब कोई नया संस्करण स्थापित हो)।

यह जानने के लिए कि आपको सेटिंग्स को अपग्रेड करने की आवश्यकता कब है, एक बुलीयन जोड़ें (कहें) NeedSettings अपनी सेटिंग्स में अपग्रेड करें, और इसे सही पर डिफ़ॉल्ट करें।

तब मुख्य() के शुरू के निकट कहीं निम्नलिखित फ़ंक्शन को कॉल करें:

/// <summary>Upgrades the application settings, if required.</summary> 
private static void upgradeApplicationSettingsIfNecessary() 
{ 
    // Application settings are stored in a subfolder named after the full #.#.#.# version number of the program. This means that when a new version of the program is installed, the old settings will not be available. 
    // Fortunately, there's a method called Upgrade() that you can call to upgrade the settings from the old to the new folder. 
    // We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which is defaulted to true. Therefore, the first time a new version of this program is run, it will have its default value of true. 
    // This will cause the code below to call "Upgrade()" which copies the old settings to the new. 
    // It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time. 

    if (Settings.Default.NeedSettingsUpgrade) 
    { 
     Settings.Default.Upgrade(); 
     Settings.Default.NeedSettingsUpgrade = false; 
    } 
} 

ध्यान दें: आप निश्चित रूप से, अन्यथा सेटिंग में बदलाव कायम नहीं की जाएगी Settings.Default.Save() अपने कार्यक्रम रास्ते से पहले कॉल करने के लिए की आवश्यकता होगी।

+0

तो यह कोड गैर WP7-ऐप्स के लिए है? – John

2

इस पर मेरा दृष्टिकोण अपग्रेड के लिए ट्रिगर के रूप में असेंबली संस्करण संख्या का उपयोग करना है। पहले चलाने पर यह v1.0 और असेंबली संस्करण संख्या 1.0.0.0 के लिए आवश्यक प्रारूप में सेटिंग्स को सहेजता है। जब कोई अपग्रेड होता है तो यह अपग्रेड किए गए असेंबली नंबर 1.1.0.0 के साथ सहेजे गए सेटिंग नंबर (1.0.0.0) की तुलना करता है और यह तय करता है कि अपग्रेड की आवश्यकता है।

मुझे पता चला कि विजुअल स्टूडियो के लिए एक पुनर्वितरण करने के लिए गारनेटी को अपग्रेड करने के लिए नहीं किया गया था, कभी-कभी यह अनइंस्टॉल करता था, पुनः स्थापित करता था जो कि उतना अच्छा नहीं था। तो मैं अपने "अपग्रेड" पथ का परीक्षण करने के लिए Windows Phone Powertools का उपयोग करने के लिए बदल गया क्योंकि यह विश्वसनीय रूप से अपग्रेड करता है।

+0

धन्यवाद, मुझे एक नज़र आएगी। लेकिन मुझे अभी भी समस्या है, क्या आपको इस बारे में कोई जानकारी है कि इसका क्या कारण है? – John