SORU
7 Mart 2009, CUMARTESİ


Konumunu kontrol edebilir miyim .NET kullanıcı uygulaması yükseltme ayarları kaybetmemek için ayarlar?

user.config dosya konumunu özelleştirmek için çalışıyorum. Şu anda karma bir sürüm numarası ile saklanır

%AppData%\[CompanyName]\[ExeName]_Url_[some_hash]\[Version]\

Bu uygulamanın sürümü için agnostik olmak istiyorum

%AppData%\[CompanyName]\[ProductName]\

Bu yapılabilir ve nasıl? Etkileri nelerdir?Kullanıcı yükseltmeden sonra önceki sürümünden ayarlarını kaybedersiniz?

CEVAP
18 Aralık 2009, Cuma


Gelecekte bu sorunum için bir referans olarak teklif edilen metin eklemek istedim. Güya ApplicationSettings altyapı Upgrade çağırarak: daha önceki bir sürümünün ayarlarını kopyalamak için isteyin

Properties.Settings.Value.Upgrade();

Client Settings FAQ blog yazısı:

Orada bir sürümü kullanıcı sayısı Neden.s: config yolu? Eğer benim uygulama yeni bir sürümünü dağıtmak, kullanıcının tüm ayarları bir önceki sürüm tarafından kaydedilen kaybetmez mi?

A: neden birkaç nedeni vardır kullanıcı.config yolunu sürüm duyarlıdır.

(1) yan yana dağıtımını desteklemek İçin bir farklı sürümleri uygulama (ile bunu yapabilirsiniz Clickonce, örneğin). Bu Olası farklı bir sürümü için uygulama için farklı ayarlar var dışarı kurtardı.

(2) yükseltme Zaman uygulama ayarları sınıfı olabilir değiştirilmiş ve olmayabilir kurtardı nedir ki ile uyumlu, sorunlara yol açabilir.

Ancak, bunu kolay yaptık bir önceki yükseltme ayarları bu uygulamanın sürümü en son. Sadece Ara ApplicationSettingsBase.() Yükseltinve ayarları alır bir önceki sürüm olan maç sınıf ve mağazanın güncel sürüm onları güncel versiyonu kullanıcı.yapılandırma dosyası. Sen de var bu davranışı geçersiz kılma seçeneği ya ayarlarında ya da sınıf sağlayıcı uygulama.

S: Tamam, ama nasıl anlayacağım Ara Yükseltme?

Bir: Güzel bir soru. Clickonce, ne zaman eğer yeni bir sürümünü yükleyin uygulama, ApplicationSettingsBase bunu otomatik olarak algılar sizin için bu noktada yükseltme ayarları ayarlar yüklenir. Olmayan Clickonce otomatik yükseltme var, hiçbir durumda, - kendinizi Yükseltmek arayın. Burada belirlenmesi için bir fikir ne zaman Yükseltme çağrısı

Bir boolean adında ayarı var CallUpgrade ve varsayılan ver değeri true. App başladığında up, gibi bir şey yapabilirsiniz:

if (Properties.Settings.Value.CallUpgrade)
{
   Properties.Settings.Value.Upgrade();
   Properties.Settings.Value.CallUpgrade = false;    
}

Bu Yükseltme sağlayacaktır() sadece ilk kez çağrılan uygulama yeni bir sürümü sonra çalışır konuşlandırdı.

bu gerçekten işe yarayabilir bir saniye için inanmıyorum Microsoft bu yeteneği sağlayacak bir yol yok, ama yöntem aynı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • sknbp

    sknbp

    16 Kasım 2006