前バージョンの設定を引き継ぐ方法(C#用メモ)
C#でアプリケーションの設定を保存するにはApplicationSettingsBaseを利用するのが簡単ですが、この設定はアプリケーションのバージョン毎に設定を持つため、バージョンアップ時には前バージョンの設定を引き継ぐ必要があります。
単に引き継ぐだけならUpgrade()を実行すれば良いのですが、これだけだと起動するごとに前バージョンの設定を読み込んでしまい現行バージョンの設定が上書きされてしまうため、Upgradeを実行したかどうかを判断させる必要があります。
まず、「Upgradeを実行したかどうか」の情報をSettingsへ追加します。
bool型で、名前は“IsUpgrade”、初期値はfalseとします。
次に、アプリケーションのイニシャル処理で下記のようにします。
// 前バージョンからのUpgradeを実行していないときは、Upgradeを実施する if (Properties.Settings.Default.IsUpgrade == false) { // Upgradeを実行する Properties.Settings.Default.Upgrade(); // 「Upgradeを実行した」という情報を設定する Properties.Settings.Default.IsUpgrade = true; // 現行バージョンの設定を保存する Properties.Settings.Default.Save(); }
IsUpgradeの初期値はfalseにしたため、現バージョンで設定を保存していないとき、つまり、新規インストール時,前バージョンからUpgradeされていないとき,両方ともfalseになり、Upgradeが実行されます。
新規インストール時、つまり、前バージョンの情報がないときにUpgradeを実行しても、初期値が有効になるため問題ありません。