使用ClickOnce部署更新本地SQL Server数据库

时间:2010-08-30 01:18:41

标签: c# .net deployment clickonce sql-server-ce

我正在构建一个将使用某些设置和本地SQL Server的应用程序。我的问题是,到了更新应用程序的时候;是否会覆盖设置或数据?

如果我想在将来更改某些表格会怎样?

2 个答案:

答案 0 :(得分:3)

坦率地说,我一直认为ClickOnce处理数据的方式很危险。如果使用ClickOnce部署数据库,则会将其放在DataDirectory中。然后,当您将更新部署到应用程序时,它会将数据库向前复制到安装下一个应用程序版本的文件夹。但是,如果数据库发生更改,它会将其复制到文件夹+ \ pre,并将新的数据库放入数据目录中。如果你没有意识到你改变它,它无论如何都会取而代之。如果您打开SQLCE数据库并检查数据结构,那么 wham 就会被部署。惊喜!

我认为将数据存储在用户配置文件下的另一个文件夹中更有意义,而且更安全。然后,您可以选择何时更新数据库。 This article将显示如何移动您的数据,以便从ClickOnce更新中获得安全保障。

此外,当您想要对数据库进行更改时,可以使用SQL语句来执行此操作,例如“ALTER TABLE”等。我已经创建了一个脚本并将其部署为一个长字符串(其中包含回车符)并让应用程序通过回车将资源拆分并逐个执行语句。你得到了一般的想法。

关于用户设置的一条评论 - 您可以通过UI以编程方式更改这些设置(即为用户提供功能)。但请注意,如果您更改应用程序的证书并运行足够高版本的.NET(3.5,4),它本身不会导致问题,但它与ClickOnce应用程序具有不同的身份,并且在发布下一个更新时不会转发用户设置。出于这个原因,我还为配置数据推出了自己的XML文件,并将其存储在LocalApplicationData中。

答案 1 :(得分:0)

通过ClickOnce更新期间不会覆盖用户级设置,但您可以推送新的应用程序级设置,因为在更新期间将覆盖[YourExeName].exe.config文件 。 / p>

如果您需要覆盖用户级设置,则必须以编程方式执行此操作。