我刚刚在Visual Basic 2010中完成了我的项目。我正在使用MS Access作为我的数据库。
我已将其保存在我的文档中并与我的项目相关联。我没有把它复制到调试。
现在,当我创建安装程序并将其安装到另一台计算机时,由于无法找到我的数据库而发生错误。手动将我的数据库复制到另一台计算机可以解决问题。
c:\users\users\documents\database.accdb
问题我如何创建包含我的数据库的安装程序?我应该把我的数据库放在哪里?将我的数据库放在用户文件夹中使其成为只读。
我使用Visual Studio安装程序,安装项目。谢谢你的帮助
答案 0 :(得分:2)
我个人的理念是安装程序不应创建每用户数据或对象。您的应用程序的可执行文件,而不是安装程序,应该是创建.accdb
文件的文件(或者从只读%programfiles%
的只读模板文件中复制文件。
如果数据库是按用户进行的,不应该被用户直接操作,那么它应该在%appdata%\YourCompany\YourProduct\
或(%localappdata%
下,如果它不应该漫游)而不是{{1} }。
如果数据库由多个用户共享,则它应位于My Documents
(又名%programdata%
)下。
所以做这样的事情:
%allusersprofile%
文件。.accdb
。CreateDatabase
下)中有一个只读模板/原型数据库
%programfiles%\You
文件是否存在%appdata%\You\Foo.accdb
将文件从File.Copy
复制到%programfiles%\You
)答案 1 :(得分:1)
数据库的正确位置是COMMONAPPLICATIONDATA文件夹的子文件夹(或者如果单个用户参与访问db APPLICATIONDATA)。
这是一个应用程序的所有数据都应该驻留的地方。可以使用Environment.SpecialFolder枚举
Dim commonPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim myAppDataPath = Path.Combine(commonPath, "MyAppDataPath")
if Not Directory.Exists(myAppDataPath) Then
Directory.CreateDirectory(myAppDataPath)
End If
Dim myDbPath = Path.Combine(myAppDataPath, "MyDatabaseName.accdb")
这是一个简单的脚本,显示如何从代码中检索此路径(当然,您可以在App.Config文件中使用简单的行作为连接字符串)
上面的代码应该已经由您的安装程序实现,您可以通过一些预定义的宏来实现。这取决于您的安装程序 例如,this question/answer详细说明了如何通过 Visual Studio 2010安装项目来访问它。
答案 2 :(得分:0)
在发布(编译)期间,编译器会询问您是否应将数据库纳入项目。如果您回答是,则程序将在 C驱动器,我不担心路径。但是,用户将无法操作数据库。