我正在使用Visual Studio 2013.我在运行此应用程序所需的机器上安装了所有组件我正在质疑。我还没有完成部署测试的应用程序,但是在完成之前出现了一些我现在需要解决的问题;以防止以后进行大修。
以下是部署到客户端时的工作方式。
客户端安装在桌面上运行的应用程序而不是WPF中的Windows应用商店。 该应用程序是按用户运行的,适用于本地计算机上的所有用户。 每个用户都需要读取和写入数据到数据库文件,但它需要与使用的MDF相同。因此,应用程序的每个进程,无论是用户会话,在同一台机器上,都与相同的数据库/相同的数据进行交互。
问题:将数据库添加到项目默认安装的位置?在应用程序文件夹中还有程序?如果是这样,对数据库进行读/写会有什么限制,是否有任何限制?我没有增加额外的安全性。信息不是私密的或关键的。
问题:最终用户是否需要安装任何类型的SQL才能使应用程序执行此操作?如果是这样,我可以在安装时打包它,但这在安装过程中似乎有很多开销。
如果每个用户安装了MDF,我如何更改此设置以便为所有用户安装一次?
在这样说之前,是的,这需要是一个数据库,而不是一个文件。我无需描述的原因。我考虑过替代方案,但这是迄今为止最好的解决方案,所以请不要替代。
答案 0 :(得分:1)
当您将mdf文件添加到项目并正确设置Copy to Output Directory
的值时,无论何时构建项目,它都将被复制到项目的bin目录中。为app项目创建安装项目时,默认情况下会将其复制到安装应用程序的文件夹中。您可以在安装项目中指定不同的位置,也可以在首次运行应用程序时将文件复制到所需的位置。
Windows中有几个合适的文件夹,一个可能的选择是%PROGRAMDATA%
C:\ProgramData
文件夹,但默认情况下只读取非管理员用户。如果您不担心安全问题,请转到%PUBLIC%
C:\Users\Public
。 interactive
组内的所有用户都可以完全访问它。
我建议将LocalDB与您的项目打包在一起。它可以使用一行代码静默安装,但只能使用管理员权限。对于非管理员点击一次安装,您必须使用SQL CE,这是完全不同的并使用sdf文件。
我认为您应该这样做:在应用程序中包含种子数据库MDF文件,并在应用程序首次启动时将其复制到%PUBLIC%\YourApp
文件夹。 (可选)在安装项目中包含LocalDB安装。