确保没有覆盖安装时已经存在的文件

本文关键字:存在 文件 覆盖 安装 确保 | 更新日期: 2023-09-27 18:12:37

Using VD2010 Microsoft Deployment Project (MSI)

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

是否有办法确保这一点,或者提示,或者其他东西来确保客户在安装新副本时不会丢失所有数据?

谢谢,

确保没有覆盖安装时已经存在的文件

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

另一种方法是安装模板SDF文件,并让应用程序将模板复制到实际的数据库文件中。这样,MSI从一开始就不知道什么是"真正的"SDF文件。它不能服务于它不知道的用户数据

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