2012-04-12 38 views
6

Đây là sự cố chỉ xảy ra đối với một số người dùng. Bất cứ khi nào tôi phát hành phiên bản ứng dụng mới trong Marketplace, tôi nhận được email từ người dùng nói rằng tất cả các cài đặt trong ứng dụng đều bị mất.Ứng dụng sẽ mất tất cả các cài đặt khi cập nhật ứng dụng được cài đặt

Tôi không thể tự tái tạo và tôi không có mã có thể xóa IsolatedStorage.

Sẽ là tuyệt vời nếu có ai đó đã có một đầu mối về những gì có thể gây ra điều này.

+0

Tôi cũng quan tâm đến vấn đề của bạn. Tôi nhận thấy điều gì đó tương tự khi thử nghiệm ứng dụng của mình. Khi chạy nó từ Visual Studio và nhắm vào điện thoại (không phải trình giả lập), đôi khi nó sẽ xóa sạch cơ sở dữ liệu và tạo lại nó, lần khác nó sẽ cập nhật mã mà không xóa cơ sở dữ liệu. – Dante

Trả lời

3

Cập nhật: Không chắc chắn nếu những điều sau đây áp dụng cho các ứng dụng WP7 - Tôi sẽ để nó ở đây chỉ trong trường hợp. Tôi đã chỉ thử điều này cho các ứng dụng bình thường.

Bạn sẽ cần phải "nâng cấp" tệp cài đặt cũ.

Bạn cũng cần phải biết khi nào bạn cần thực hiện việc này (tức là chỉ khi cài đặt phiên bản mới).

Để biết khi nào bạn cần nâng cấp cài đặt, hãy thêm boolean gọi (say) NeedSettingsNâng cấp vào cài đặt của bạn và đặt mặc định thành true.

Sau đó gọi hàm sau nơi nào đó gần đầu Main():

/// <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; 
    } 
} 

Lưu ý: Bạn sẽ tất nhiên cần phải gọi Settings.Default.Save() trước khi thoát khỏi chương trình của bạn, nếu các thiết lập thay đổi sẽ không được tiếp tục tồn.

+0

Vì vậy, mã này dành cho các ứng dụng không phải WP7? – John

2

Cách tiếp cận của tôi đối với điều này là sử dụng số phiên bản lắp ráp làm trình kích hoạt để nâng cấp. Ngày đầu tiên chạy nó lưu các thiết lập ở định dạng cần thiết cho v1.0 và số phiên bản lắp ráp 1.0.0.0. Khi nâng cấp xảy ra, nó so sánh số cài đặt đã lưu (1.0.0.0) với số phiên bản được nâng cấp 1.1.0.0 và quyết định rằng cần nâng cấp.

Tôi phát hiện ra rằng thực hiện một redeploy cho studio trực quan đã không guarentee để làm một nâng cấp, đôi khi nó đã làm một gỡ bỏ cài đặt, cài đặt lại mà không phải là tốt. Vì vậy, tôi đã thay đổi để sử dụng Windows Phone Powertools để kiểm tra đường dẫn "nâng cấp" của tôi vì có vẻ như nâng cấp đáng tin cậy.

+0

Cảm ơn, tôi sẽ xem xét. Nhưng tôi vẫn còn có vấn đề, bạn có bất kỳ ý tưởng về những gì đang gây ra điều này? – John

Các vấn đề liên quan