如果文件在安装时已存在,请确保不覆盖该文件

时间:2013-05-07 05:53:24

标签: c# windows-installer

使用VD2010 Microsoft部署项目(MSI)

我的应用程序有一个数据库(SDF),客户用它来输入所有数据,卸载时我需要确保SDF文件保留(所以我设置Permanet == true)但我还需要确保它们何时出现安装新版本的应用程序我不会用我在第一次使用时安装的空/空白数据库覆盖他们的副本....

无论如何要确保这个,或提示,或确保客户在安装新副本时不会丢失所有数据?

谢谢,

2 个答案:

答案 0 :(得分:1)

从Windows Installer的角度来看,SDF只是一个非版本化的文件。如果您将其作为自己组件的密钥文件并使用默认文件版本控制规则,那么Windows Installer将对其进行评估。行为将是如果SDF具有相同的创建和最后修改日期,它将被覆盖。如果它具有不同的创建和最后修改日期,则不会被覆盖。根据SDF文件的意图,这似乎对我有意义。

另一种方法是安装模板SDF文件并让应用程序将模板复制到真实数据库文件中。这样MSI就不会对“真正的”SDF文件有所了解。它无法为不知道的用户数据提供服务。

答案 1 :(得分:0)

如果在MSI安装中包含sdf文件,它将只复制sdf数据库文件。在sdf问题的情况下,它不会提供任何错误。即使sdf文件崩溃,它也会成功完成安装。在db错误的情况下,您可以尝试对db进行任何检查并回滚安装。