Фон
У меня есть простое приложение WinForms, написанное на С#. Я некоторое время обсуждал решения для развертывания, но в конечном итоге решил отказаться от ClickOnce, поскольку некоторые из ограничений были крайне жесткими.
Вместо этого я применил простое решение для версии приложения через версии сборки/файла (я держу их в синхронизации) в свойствах приложения. Я развертываю проект Setup (*.msi). Я храню последний номер версии сборки в файле XML в Интернете, а также последний файл установщика. Во время выполнения я просто проверяю Application.ProductVersion на последнюю версию онлайн и открываю диалоговое окно обновления, если доступно обновление.
Проблема
До сих пор это работало очень хорошо, но я недавно заметил серьезную проблему с этим подходом. Когда обновлена версия сборки приложения, в AppData/Company/Product/Version/blahblahblah создается новая версия файла пользовательских настроек (user.config). Это явно заставляет пользователя reset все в новой версии.
Рекомендуемые решения
Я не уверен, как действовать дальше. У приложения только 1 релиз до сих пор, а текущая пользовательская база - это в основном тот, с кем я могу попросить его протестировать, поэтому переключение стратегий не имеет большого значения. Я подумал:
1.) Напишите мою собственную систему настроек и, таким образом, получите полный контроль над тем, где/как хранится и используется файл настроек.
2.) Передумайте мою стратегию по версии/обновлению, чтобы обновление не было основано на версии сборки. Я не уверен, как это сделать, но мое тестирование показало, что даже создание и установка новой версии с той же версией сборки все равно сломает user.config.
Я предполагаю, что я действительно спрашиваю, есть ли способ сохранить систему настроек по умолчанию, поскольку она настолько проста в использовании, что приспосабливает ее к моей стратегии развертывания.