带有MDF的WPF桌面应用程序在本地用于所有本地用户

时间:2014-08-15 18:32:06

标签: sql wpf

我正在使用Visual Studio 2013.我在运行此应用程序所需的机器上安装了所有组件我正在质疑。我还没有完成部署测试的应用程序,但是在完成之前出现了一些我现在需要解决的问题;以防止以后进行大修。

以下是部署到客户端时的工作方式。

客户端安装在桌面上运行的应用程序而不是WPF中的Windows应用商店。 该应用程序是按用户运行的,适用于本地计算机上的所有用户。 每个用户都需要读取和写入数据到数据库文件,但它需要与使用的MDF相同。因此,应用程序的每个进程,无论是用户会话,在同一台机器上,都与相同的数据库/相同的数据进行交互。

问题:将数据库添加到项目默认安装的位置?在应用程序文件夹中还有程序?如果是这样,对数据库进行读/写会有什么限制,是否有任何限制?我没有增加额外的安全性。信息不是私密的或关键的。

问题:最终用户是否需要安装任何类型的SQL才能使应用程序执行此操作?如果是这样,我可以在安装时打包它,但这在安装过程中似乎有很多开销。

如果每个用户安装了MDF,我如何更改此设置以便为所有用户安装一次?

在这样说之前,是的,这需要是一个数据库,而不是一个文件。我无需描述的原因。我考虑过替代方案,但这是迄今为止最好的解决方案,所以请不要替代。

1 个答案:

答案 0 :(得分:1)

当您将mdf文件添加到项目并正确设置Copy to Output Directory的值时,无论何时构建项目,它都将被复制到项目的bin目录中。为app项目创建安装项目时,默认情况下会将其复制到安装应用程序的文件夹中。您可以在安装项目中指定不同的位置,也可以在首次运行应用程序时将文件复制到所需的位置。

Windows中有几个合适的文件夹,一个可能的选择是%PROGRAMDATA% C:\ProgramData文件夹,但默认情况下只读取非管理员用户。如果您不担心安全问题,请转到%PUBLIC% C:\Users\Publicinteractive组内的所有用户都可以完全访问它。

我建议将LocalDB与您的项目打包在一起。它可以使用一行代码静默安装,但只能使用管理员权限。对于非管理员点击一次安装,您必须使用SQL CE,这是完全不同的并使用sdf文件。

我认为您应该这样做:在应用程序中包含种子数据库MDF文件,并在应用程序首次启动时将其复制到%PUBLIC%\YourApp文件夹。 (可选)在安装项目中包含LocalDB安装。