0

使用 VD2010 Microsoft 部署项目 (MSI)

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

有没有办法确保这一点,或提示,或确保客户在安装新副本时不会丢失所有数据?

谢谢,

4

2 回答 2

1

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

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

于 2013-05-07T13:11:28.300 回答
0

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

于 2015-04-27T18:27:27.133 回答