Обновление локальных баз данных SQL Server с помощью развертывания ClickOnce - PullRequest
4 голосов
/ 30 августа 2010

Я создаю приложение, которое будет использовать некоторые настройки и локальный SQL Server. У меня вопрос, когда придет время обновить приложение; настройки или данные будут перезаписаны?

Что произойдет, если я захочу изменить некоторые таблицы в будущем?

Ответы [ 2 ]

3 голосов
/ 31 августа 2010

Честно говоря, я всегда думал, что способ обработки данных в ClickOnce опасен.Если вы развертываете базу данных с помощью ClickOnce, она помещается в DataDirectory.Затем, когда вы развертываете обновление в приложении, оно копирует базу данных вперед в папку, где установлена ​​следующая версия приложения.Но если база данных изменяется, она копирует ее в папку + \ pre и помещает новую в каталог данных.Если вы не понимаете, что изменили его, он все равно заменит его.Если вам достаточно открыть базу данных SQLCE и проверить структуры данных, wham она будет развернута.Сюрприз!

Я думаю, что хранить данные в другой папке под профилем пользователя имеет больше смысла и безопаснее.Тогда ВЫ можете выбрать, когда обновлять свою базу данных. Эта статья покажет, как переместить ваши данные, чтобы они были в безопасности от обновлений ClickOnce.

Кроме того, когда вы действительно хотите внести изменения в свою базу данных, вы можете использовать для этого операторы SQL, такие как «ALTER TABLE» и так далее.Я создал сценарий и развернул его как одну длинную строку (с возвратом каретки), и приложение разделило ресурс на части путем возврата каретки и выполнило инструкции по одному.Вы получите общую идею.

Один комментарий о пользовательских настройках - Вы можете изменить их программно через пользовательский интерфейс (т.е. дать пользователю возможность).Но обратите внимание, что если вы измените сертификат своего приложения и используете достаточно высокую версию .NET (3.5, 4), это само по себе не вызовет проблем, но у него ПОЛНОСТЬЮ идентифицирует себя как приложение ClickOnce,и пользовательские настройки не переносятся при публикации следующего обновления.По этой причине я также свернул свой собственный XML-файл для данных конфигурации и также храню его в LocalApplicationData.

0 голосов
/ 30 августа 2010

Настройки уровня пользователя не будут перезаписаны во время обновления через ClickOnce, но вы можете нажать новые настройки уровня приложения, поскольку [YourExeName].exe.config файл будет перезаписываться во время обновления.

Если вам нужно перезаписать настройки уровня пользователя, вам придется сделать это программно.

...