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

问题描述 投票:0回答:2

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

如果我以后想换一些桌子怎么办?

c# .net deployment clickonce sql-server-ce
2个回答
3
投票

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

我认为将数据存储在用户配置文件下的另一个文件夹中更有意义,也更安全。然后您可以选择何时更新您的数据库。

另外,当你确实想对你的数据库进行更改时,你可以使用 SQL 语句来这样做,例如“ALTER TABLE”等。我创建了一个脚本并将其部署为一个长字符串(其中包含回车符),并让应用程序通过回车符将资源分开并一条一条地执行语句。你明白了。

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


0
投票

用户级设置在通过 ClickOnce 更新期间不会被覆盖,但您可以推送新的应用程序级设置,因为

[YourExeName].exe.config
文件 will 在更新期间被覆盖。

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

© www.soinside.com 2019 - 2024. All rights reserved.