Автоматически обновлять пользовательские настройки из предыдущей версии файла app.config?

Каждый раз, когда я компилирую свое приложение и номер версии меняется (у меня автоматически увеличивается номер сборки), я теряю настроенные пользователем параметры app.config, поскольку они хранятся в папке AppData для конкретной версии. По сути, каждый выпуск моего приложения начинается с нуля в том, что касается пользовательских настроек.

Хотя при разработке это немного раздражает, по мере того, как я подхожу к развертыванию / выпуску, возникает вопрос: если я использую app.config для хранения своих пользовательских настроек, будут ли персонализированные настройки пользователя обновляться каждый раз, когда они устанавливают патч, который меняет номер версии моего приложения? Если да, есть ли простой способ «обновить» настройки из предыдущей версии? Я знаю, что использование HKCU в реестре - еще один вариант, но мне нравится простота пространства имен My.Settings, и я хотел бы остаться с app.config.

Другой вопрос SO задает нечто подобное, хотя ответ не кажется таким ясным. Будет ли установка моего MSI так, чтобы он запрашивал у пользователя обновление, достаточной для сохранения этих настроек уровня пользователя?


person SqlRyan    schedule 29.07.2009    source источник


Ответы (3)


Вы смотрели ApplicationSettingsBase.Upgrade () ? Это позволяет обновить настройки с предыдущей версии с помощью следующего вызова:

My.Settings.Upgrade()
person Tim Greaves    schedule 30.07.2009
comment
Это именно то поведение, которое я искал - он выбирает самую последнюю копию настроек и загружает их. Также стоит отметить метод ApplicationSettingsBase.GetPreviousVersion, который можно использовать для загрузки одного параметра из предыдущей версии. Спасибо! - person SqlRyan; 30.07.2009

Не знаю, почему, но мне кажется, что ни команда обновления, ни получение предыдущей версии не работают. Что я делаю не так? Мне нужно вызвать команду обновления или что-то в этом роде. Я делаю это при загрузке формы, должно ли это быть событием приложения?

ОБНОВЛЕНИЕ

Выяснили, почему, кажется, что это не работает, когда вы используете 4-значный основной номер версии. Я использовал 2012 год в качестве основного номера версии. Я изменил это на 12, и это работает как шарм, хотя и не соответствует тысячелетию. Тем не менее, у меня есть 88 лет, прежде чем я должен начать об этом беспокоиться!

person Alex    schedule 17.10.2012

Рассматривали ли вы развертывание ClickOnce? Затем эта тема будет подробно рассмотрена . ИМО, ClickOnce намного проще как для разработчика, так и для пользователя.

person Marc Gravell    schedule 29.07.2009
comment
ClickOnce хорош, пока не перестанет работать, а затем отладить его практически невозможно. Мы использовали его и заменили собственной программой типа пусковой установки, потому что было слишком много вещей, которые могли выйти из-под нашего контроля и без достаточного протоколирования, что оставило пользователя sol. - person Peter Drier; 09.09.2013