【问题标题】:How To Publish/Create Installer For A C# Application With An SQLite Database?如何为带有 SQLite 数据库的 C# 应用程序发布/创建安装程序?
【发布时间】:2018-08-13 03:02:42
【问题描述】:

我有一个使用 Visual Studio 用 C# 编写的简单 WinForms 应用程序,其中包括一个 SQLite 数据库。 数据库的构建操作属性设置为“内容”,复制到输出目录设置为“如果较新则复制”。 应用程序已准备好发布。我想做一个安装程序。解决此问题的最佳方法是什么? 我预计会出现一些问题。我应该将数据库文件保存在哪里?如果它被保存到 Program Files 文件夹中,数据库将变为只读。我应该在哪里保存它,我应该如何保存?

【问题讨论】:

  • 我的个人推荐是WiX。您还可以阅读ClickOnce(更简单的方式)
  • 嘿,谢谢你的回答.. 我想我的问题更多是关于在哪里找到数据库.. 到目前为止,我一直在使用 Inno Setup 并将数据库添加到 Program Files 文件夹中,我保留出现只读错误.. 你知道我应该如何制作安装程序以免发生这种情况吗?
  • 好的,这值得回答。我会写一个。

标签: c# database winforms sqlite installation


【解决方案1】:

我将您的问题理解为:“在安装和使用应用程序期间,将可写文件存储在哪里?”

这里有两个特殊的地方:

  1. ApplicationData 特殊文件夹。此文件夹可由当前用户访问,实际上位于 C:\Users\\AppData\Roaming (Win7)。该路径存储在%APPDATA% 环境变量中,可以这样使用:

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
    

    您可以将文件安全地存储在以下文件夹结构中:%APPDATA%\YourCompanyName\YourAppName\

  2. CommonApplicationData 特殊文件夹。几乎和上面一样,除了它可以被所有用户访问并且实际上被放置在__(Win7)中。该路径存储在%ALLUSERSPROFILE%环境变量中,可以这样使用:

    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
    

    和以前一样,您可以将文件安全地存储在以下文件夹结构中:%ALLUSERSPROFILE%\YourCompanyName\YourAppName\

至于你的情况,这里你如何获得一个 db 文件路径:

var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
var dbPath = Path.Combine(appDataPath, "YourCompanyName\YourAppName", "your_db_name.sqlite3");

真正的区别是:这个数据库是 所有 windows 用户通用的,还是 每个 用户应该有自己的数据库。

【讨论】:

  • 非常感谢!这正是我所需要的!所以如果我理解正确..我会让我的安装程序将所有文件保存到 ProgramFiles 文件夹中,但是我会将数据库保存到 AppData 文件夹中..这将使数据库变量的路径,所以我需要更改在 Environment.GetFolderPath.. 的帮助下我的连接字符串是正确的吗?如果是这样,我该如何选择将哪些文件安装到哪些文件夹中?谢谢!
  • 您可以尝试在连接字符串中使用环境变量 (%APPDATA%)(我不确定这是否正常)。至于选择文件 - 我不确定你的意思:\ db 到“AppData”,所有其他到“Program Files”?
  • 嗯..我知道我需要将数据库存储到appdata文件夹中..然后我需要更改数据库连接字符串..但是,我不知道如何移动数据库到 appdata 文件夹。像..我如何做到这一点,以便当用户单击安装时,一些文件进入程序文件文件夹,而数据库进入 appdata 文件夹?也许我没有正确考虑这一点..
  • 您如何实际安装您的应用程序?微星?点击一次?您自己的安装程序?
  • 我使用的是 inno 安装程序,然后尝试了 windows 安装程序,但是.. 我会使用你建议的任何东西来完成这项工作..
猜你喜欢
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 2017-12-12
相关资源
最近更新 更多