2

我在 VS2005 中有一个安装和部署项目。我正在安装的文件之一是 SQLite 数据文件。

我即将发布该软件的新版本,但我发现如果我在现有安装上运行更新,它会覆盖数据文件。

我在安装项目中有一个更新的数据文件,所以它比已经安装的更新,但我不想覆盖它。

我尝试将该文件的永久属性设置为 True,但无济于事。

有什么建议么?

4

3 回答 3

1

好的,这是我使用的解决方法:

  • 在我的设置项目中,我已将空白数据库文件从 Database.db 重命名为 Database-blank.db。
  • 在我的应用程序中,我正在检查 Database.db 是否丢失,如果是,则将 Database-blank.db 复制到 Database.db。
  • 然后只需加载现有的 Database.db

这样我可以确保数据文件(Database.db)的本地副本不会被较新版本的软件取代。

于 2009-08-28T08:13:12.370 回答
0

在 MSI 中,最好的方法是在Upgrade table中进行记录,确定这是否是升级安装,如果是,则设置属性。然后将数据文件放入一个组件中,并在组件上放置一个条件。或者,在AppSearch 表中创建一个条目,检查文件是否存在(通过DrLocator 表)。

我不知道安装和部署项目是否支持其中任何一个。因此,作为后备,使用不同的名称安装文件,然后创建一个有条件地复制文件的自定义操作。

于 2009-08-26T09:14:09.863 回答
0

因为 VS2005 安装程序在升级程序时会先删除原来安装的实例,然后再安装一个新实例,所以每次都会删除该文件。

为避免替换或覆盖文件,我建议如下: 1- 在安装项目中将文件标记为只读。2-在安装项目中将该文件标记为永久文件。

现在升级文件后它不会被覆盖,但你的应用程序不能处理这个文件,因为它是只读的,所以在你的应用程序启动时检查数据文件是否是只读的,取消选中它。

于 2009-08-26T09:36:02.813 回答