更新时防止覆盖数据库ClickOnce应用程序

问题描述:

我完成了我的c#单击一次应用程序,所以我发布了它。 它的问题是,我使用一个小的SQLite数据库来保存设置和很多其他小东西,每当我更新我的应用程序时,它们将被新的SQLite数据库覆盖。更新时防止覆盖数据库ClickOnce应用程序

数据库中有如下设置:记住密码和记住用户名,还有一个计数器,记录应用程序启动的次数。所有这些都将丢失,用户将不得不再次填写他的用户名和密码,即使他选中了要记住的框,因为数据库将被覆盖。

问题:如何防止SQLite数据库在我的Click Once应用程序中被覆盖?

+0

Clickonce升级客户机中的应用程序,它如何更新数据库?此数据库服务器位于何处? – Sandeep 2013-03-27 08:14:37

+0

数据库位于项目文件夹中,它不在服务器上,因为它不需要。所以我从我的项目中的Visual Studio更新数据库,然后按发布。 – Max 2013-03-27 08:15:23

+1

这可能会有所帮助。 http://*.com/questions/3597296/updating-local-sql-server-databases-with-clickonce-deployment – Sandeep 2013-03-27 08:25:50

我用下面的链接来解决我的问题:

http://robindotnet.wordpress.com/2009/08/19/where-do-i-put-my-data-to-keep-it-safe-from-clickonce-updates/

本文介绍了如何可以在应用程序数据的漫游文件夹中创建我的数据库,创建一个文件夹中有名为喜欢你的公司名称或您的应用程序的名称并将数据库放入该文件夹中。

你应该有一个“模板”数据库,它将始终覆盖并创建数据库,其数据在安装新版本应用程序后不会覆盖。

如果在启动应用程序时不存在带数据的数据库,则应该创建数据库。

+0

数据库在不存在时被创建,因为应用程序将检查它是否存在是或否,但是如果有数据库,它将被删除,因为Clickonce会删除所有内容并将新发布置于原地。 – Max 2013-03-27 10:16:45

+0

通常,安装文件夹应该是静态的(即使它是AppData)。您可以使用MyDocuments或AppData的子文件夹作为DB的占位符。 – Rover 2013-03-27 12:44:50