我在 VS2005 中有一个安装和部署项目。我正在安装的文件之一是 SQLite 数据文件。
我即将发布该软件的新版本,但我发现如果我在现有安装上运行更新,它会覆盖数据文件。
我在安装项目中有一个更新的数据文件,所以它比已经安装的更新,但我不想覆盖它。
我尝试将该文件的永久属性设置为 True,但无济于事。
有什么建议么?
我在 VS2005 中有一个安装和部署项目。我正在安装的文件之一是 SQLite 数据文件。
我即将发布该软件的新版本,但我发现如果我在现有安装上运行更新,它会覆盖数据文件。
我在安装项目中有一个更新的数据文件,所以它比已经安装的更新,但我不想覆盖它。
我尝试将该文件的永久属性设置为 True,但无济于事。
有什么建议么?
好的,这是我使用的解决方法:
这样我可以确保数据文件(Database.db)的本地副本不会被较新版本的软件取代。
在 MSI 中,最好的方法是在Upgrade table中进行记录,确定这是否是升级安装,如果是,则设置属性。然后将数据文件放入一个组件中,并在组件上放置一个条件。或者,在AppSearch 表中创建一个条目,检查文件是否存在(通过DrLocator 表)。
我不知道安装和部署项目是否支持其中任何一个。因此,作为后备,使用不同的名称安装文件,然后创建一个有条件地复制文件的自定义操作。
因为 VS2005 安装程序在升级程序时会先删除原来安装的实例,然后再安装一个新实例,所以每次都会删除该文件。
为避免替换或覆盖文件,我建议如下: 1- 在安装项目中将文件标记为只读。2-在安装项目中将该文件标记为永久文件。
现在升级文件后它不会被覆盖,但你的应用程序不能处理这个文件,因为它是只读的,所以在你的应用程序启动时检查数据文件是否是只读的,取消选中它。