【问题标题】:Sqlite database cannot be accessed after installation in WPFSqlite数据库在WPF中安装后无法访问
【发布时间】:2019-04-26 16:34:57
【问题描述】:

我创建了一个 WPF 应用程序,并在原始解决方案中使用了一个 Visual Studio 设置项目来创建一个安装程序。此安装程序以正确的方式创建并在系统上安装应用程序。

问题是在应用程序内部需要创建一个 sqlite 数据库。在应用程序在 Visual Studio 中之前没有问题,但是一旦安装在主窗口中就会引发异常:

System.UnauthorizedAccessException:访问路径“C:\Program Files (x86)\User\TestApp\database.sqlite”被拒绝

我在应用内使用的代码如下:

if (!File.Exists("database.sqlite"))
{
    SQLiteConnection.CreateFile("database.sqlite");
    SQLiteConnection sQLiteConnection = new SQLiteConnection("Data Source=database.sqlite;Version=3;");
    sQliteConnection.setPassword("1234");
    sQliteConnection.Open();
}

你能说出问题出在哪里吗?我需要将这些元素放在安装后可访问的特殊文件夹中吗?或者还有其他方法可以确保应用在目标机器上安装后正常运行?

【问题讨论】:

  • 您应该将可写文件安装到安装用户的 LocalAppData 文件夹中,在您的应用程序的自定义产品文件夹下。

标签: c# wpf sqlite


【解决方案1】:

Program Files 或 Program Files (x86) 或下面的任何文件夹中的文件通常设置为只读访问,除非您的程序以提升权限运行。这要求任何写访问文件或数据库位于其他地方。根据您放入的内容,ApplicationData 或 LocalApplicationData(来自 Environment.GetFolderPath)是典型的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多