2013-10-01 44 views
0

我已经使用Visual Studio安装程序创建了我的项目的安装程序。 我的产品会经常更新。所以我需要在一段时间内给出更新。 我可以通过更改产品代码并保持旧的升级代码不变来创建版本。通过保留以前版本的数据库更新安装程序完整安装 - Visual Studio安装程序

但问题是,

我有它安装在我的应用程序文件夹(文件夹安装)SQLite数据库。

在我的下一个更新版本上,DB的模式可能会有一些变化。但是,即使数据库已更新并且架构已稍微更改,最近版本也需要以前版本存储的数据。

我的想法是在安装下一个版本的同时备份以前的版本。一旦安装了最新版本,修改的数据库应该从备份文件夹中的前一个数据库获取数据,并且应该进行更新。 如果在安装较新版本时出现一些异常情况,应该回滚安装过程,并保持原有版本不变。 在这种情况下,VSI中的自定义操作可能会有所帮助。

有什么办法可以实现它。如果还有其他方法可以解决这个问题,我想知道它。

回答

1

所以我需要在一段时间内给出更新。更新现有应用

最好的解决办法是使用OnceClick这是使用,你可以在更优雅的方式推送更新客户端machaines一个微软的技术。

一旦最新版本已安装修改的DB应采取 从先前的DB数据在备份文件夹,并应 更新。

我同意,如果在更新过程中出现任何问题,并且您想要恢复所有内容,则必须始终采用数据库备份。但你如何从备份数据库获取数据并更新新的数据库?你打算读取每个表中的数据并插入到新的数据库表中吗?

我建议你不是在应用程序更新发生时复制新的数据库模式,而只包括delta script与更新包。此增量可能只是一列大小或数据类型变化等

你必须做的是,

  1. 就拿数据库备份
  2. 执行现有数据库的增量脚本,该脚本将升级数据库到新版本。

在这种计算策略,你将摆脱许多复杂的,你将不得不处理,如果你按照你所提到的方法(复制新的数据库,并从旧的数据库得到的数据)

+0

非常感谢感谢您为解决我的问题而采取的各种利益。如果你能评论我一些从以前的安装中获取数据库备份的链接,我会很高兴。我现在正在浏览OnceClick和Delta Script,看它是否符合我的要求。感谢您的建议:) – BinaryMee

+0

@CMB由于SqlLite数据库是一个文件,您不需要任何compltex逻辑来备份它。只需一个File.Copy()就可以完成它:)。如果它对你有帮助,请提高答案,这将有助于他人找到相关答案。 – Kurubaran

+0

是的我知道文件复制会做到这一点。但同时安装新版本时,我应该能够从前一个版本复制数据库。复制文件形成先前安装的过程,在当前安装部分的自定义操作中询问。 :) – BinaryMee

相关问题